Error bij nieuw record in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco Apeldoorn

Marco Apeldoorn

07/04/2013 14:15:47
Quote Anchor link
Hoi,

Ik gebruik de volgende PHP om een record toe te voegen aan een database:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
// Create connection
$con=mysqli_connect("localhost","*******","********","********");

// Check connection
if (mysqli_connect_errno($con))
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


$sql="INSERT INTO Kittens (datuminvoer, ras, nest, geboren, vader, moeder, fokker, woonplaats, telefoon, email, afbeelding)
VALUES
('$_POST[datuminvoer]','$_POST[fras]','$_POST[fnest],'$_POST[fgeboren],'$_POST[fvader],'$_POST[fmoeder],'$_POST[fwoonplaats],'$_POST[ftelefoon],'$_POST[femail]','$_POST[fafbeelding]')"
;

if (!mysqli_query($con,$sql))
  {

  die('Error' . mysql_error());
  }

echo "1 record toegevoegd";

mysqli_close($con);
?>


Ik krijg een error die niet verder uitgelegd word, er word ook geen record aangemaakt.
Iemand een idee wat er fout zit?

Ben net begonnen met het werken met database in SQL en PhP.

Alvast bedankt,

Marco
 
PHP hulp

PHP hulp

25/12/2024 15:22:06
 
Eddy E

Eddy E

07/04/2013 14:18:30
Quote Anchor link
Escape je variabelen.
Gebruik de haakjes zoals bedoeld.
Waarschijnlijk staat er nu letter $_POST[iets] in je database?


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$sql
="INSERT INTO Kittens
    (
    datuminvoer,
    ...
    )
VALUES
    (
    '"
.$_POST['datuminvoer']."',
    ...
    )
"
;
?>


?>
Gewijzigd op 07/04/2013 14:19:28 door Eddy E
 
- Ariën  -
Beheerder

- Ariën -

07/04/2013 14:20:33
Quote Anchor link
@ Eddy, je escaped ze niet, ze zet alleen de variabelen in jouw geval alleen buiten quotes.

Een ebter voorbeeld is dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$sql
="INSERT INTO Kittens
    (
    datuminvoer,
    ...
    )
VALUES
    (
    '"
.mysql_real_escape_string($_POST['datuminvoer'])."',
    ...
    )
"
;
?>

Hierbij is SQL-injection niet meer mogelijk, en kunnen anderen je database niet manipuleren (hacken).
 
Marco Apeldoorn

Marco Apeldoorn

07/04/2013 14:38:28
Quote Anchor link
Hoi,

Ik heb nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
// Create connection
$con=mysqli_connect("localhost","*************","*************","*********");

// Check connection
if (mysqli_connect_errno($con))
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


$sql="INSERT INTO Kittens (
datuminvoer,
ras,
nest,
geboren,
vader,
moeder,
fokker,
woonplaats,
telefoon,
email,
afbeelding,
)
VALUES
(
'"
.mysql_real_escape_string($_POST[datuminvoer]."',
'"
.mysql_real_escape_string($_POST[fras]."',
'"
.mysql_real_escape_string($_POST[fnest]."',
'"
.mysql_real_escape_string($_POST[fgeboren]."',
'"
.mysql_real_escape_string($_POST[fvader]."',
'"
.mysql_real_escape_string($_POST[fmoeder]."',
'"
.mysql_real_escape_string($_POST[fwoonplaats]."',
'"
.mysql_real_escape_string($_POST[ftelefoon]."',
'"
.mysql_real_escape_string($_POST[femail]."',
'"
.mysql_real_escape_string($_POST[fafbeelding]."'
)
"
;

if (!mysqli_query($con,$sql))
  {

  die('Error' . mysql_error());
  }

echo "1 record toegevoegd";

mysqli_close($con);
?>


Krijg in regel 39 een error vanwege de ;
maar heb wel het idee dat het al beter gaat.

Alvast bedankt,

Marco
Gewijzigd op 07/04/2013 14:39:58 door Marco Apeldoorn
 
- Ariën  -
Beheerder

- Ariën -

07/04/2013 14:42:22
Quote Anchor link
Je mist de )
 
- SanThe -

- SanThe -

07/04/2013 16:14:43
Quote Anchor link
- Aar - op 07/04/2013 14:42:22:
Je mist de )


En quotes.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
'".mysql_real_escape_string($_POST['datuminvoer'])."',
?>
 
Marco Apeldoorn

Marco Apeldoorn

07/04/2013 19:13:50
Quote Anchor link
Hoi,

Dank, dank.

Nu is het script aangepast naar jullie adviezen.
Dank daarvoor.

Krijg ik de volgende error

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/spcadmin/domains/saintprocat.nl/public_html/php-db/toevoegen.php on line 35
ErrorAccess denied for user 'apache'@'localhost' (using password: NO)

terwijl de connectie met deze code word aangemeld.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
// Create connection
$con=mysqli_connect("localhost","*******","********","*********");

// Check connection
if (mysqli_connect_errno($con))
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

?>


Enig idee wat hier aan de hand kan zijn?

Alvast bedankt,

Marco
 
Bart V B

Bart V B

07/04/2013 19:35:57
Quote Anchor link
Je werkt met mysqli en niet met mysql, daar zit het verschil in.
Verder mis je ) om je variabelen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
'".mysqli_real_escape_string($_POST[datuminvoer])."',
'".mysqli_real_escape_string($_POST[fras])."',
'".mysqli_real_escape_string($_POST[fnest])."',
'".mysqli_real_escape_string($_POST[fgeboren])."',
'".mysqli_real_escape_string($_POST[fvader])."',
'".mysqli_real_escape_string($_POST[fmoeder])."',
'".mysqli_real_escape_string($_POST[fwoonplaats])."',
'".mysqli_real_escape_string($_POST[ftelefoon])."',
'".mysqli_real_escape_string($_POST[femail])."',
'".mysqli_real_escape_string($_POST[fafbeelding])."'
 
Marco Apeldoorn

Marco Apeldoorn

08/04/2013 12:20:58
Quote Anchor link
Hoi,

Thanks allemaal voor het meedenken, maar het werkt nog niet.

De code is nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
// Create connection
$con=mysqli_connect("localhost","**********","********","**********");

// Check connection
if (mysqli_connect_errno($con))
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


$sql="INSERT INTO Kittens (
datuminvoer,
ras,
nest,
geboren,
vader,
moeder,
fokker,
woonplaats,
telefoon,
email,
afbeelding
)
VALUES
(
'"
.mysqli_real_escape_string($_POST[datuminvoer])."',
'"
.mysqli_real_escape_string($_POST[fras])."',
'"
.mysqli_real_escape_string($_POST[fnest])."',
'"
.mysqli_real_escape_string($_POST[fgeboren])."',
'"
.mysqli_real_escape_string($_POST[fvader])."',
'"
.mysqli_real_escape_string($_POST[fmoeder])."',
'"
.mysqli_real_escape_string($_POST[fwoonplaats])."',
'"
.mysqli_real_escape_string($_POST[ftelefoon])."',
'"
.mysqli_real_escape_string($_POST[femail])."',
'"
.mysqli_real_escape_string($_POST[fafbeelding])."'
)
"
;

if (!mysqli_query($con,$sql))
  {

  die('Error' . mysqli_error());
  }

echo "1 record toegevoegd";

mysqli_close($con);
?>


en geeft als errors:


Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/spcadmin/domains/saintprocat.nl/public_html/php-db/toevoegen.php on line 26

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/spcadmin/domains/saintprocat.nl/public_html/php-db/toevoegen.php on line 27

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/spcadmin/domains/saintprocat.nl/public_html/php-db/toevoegen.php on line 28

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/spcadmin/domains/saintprocat.nl/public_html/php-db/toevoegen.php on line 29

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/spcadmin/domains/saintprocat.nl/public_html/php-db/toevoegen.php on line 30

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/spcadmin/domains/saintprocat.nl/public_html/php-db/toevoegen.php on line 31

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/spcadmin/domains/saintprocat.nl/public_html/php-db/toevoegen.php on line 32

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/spcadmin/domains/saintprocat.nl/public_html/php-db/toevoegen.php on line 33

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/spcadmin/domains/saintprocat.nl/public_html/php-db/toevoegen.php on line 34

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/spcadmin/domains/saintprocat.nl/public_html/php-db/toevoegen.php on line 35

Warning: mysqli_error() expects exactly 1 parameter, 0 given in /home/spcadmin/domains/saintprocat.nl/public_html/php-db/toevoegen.php on line 41
Error

Zou het kunnen zijn dat er met de bouw van de database zelf iets mis is?

Groetjes,

Marco
 
- Ariën  -
Beheerder

- Ariën -

08/04/2013 12:31:48
Quote Anchor link
Nee, je mist de query-indentifier: http://php.net/mysqli_real_escape_string
Plus dat je de quotes van SanThe niet hebt toegevoegd....
Gewijzigd op 08/04/2013 12:32:21 door - Ariën -
 
Marco Apeldoorn

Marco Apeldoorn

11/04/2013 13:53:07
Quote Anchor link
Hoi allemaal,

Ondanks jullie inspanningen werkte het nog niet.

Heb na een eigen zoektocht de code aangepast tot:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// Create connection
$con=mysqli_connect("localhost","****","****","****");

// Check connection
if (mysqli_connect_errno($con))
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


$kitten = "mysqli_real_escape_string($_POST[fdatum]),mysqli_real_escape_string($_POST[fgeboren]),mysqli_real_escape_string($_POST[ftoontot]),mysqli_real_escape_string($_POST[fnest]),mysqli_real_escape_string($_POST[fras]),mysqli_real_escape_string($_POST[fvader]),mysqli_real_escape_string($_POST[fmoeder]),mysqli_real_escape_string($_POST[fwoonplaats]),mysqli_real_escape_string($_POST[ftelefoon]),mysqli_real_escape_string($_POST[femail]),mysqli_real_escape_string($_POST[fwebsite]),mysqli_real_escape_string($_POST[fafbeelding])";
$velden= "datum, geboren, toontot, nest, ras, vader, moeder, fokker, woonplaats, telefoon, email, website, afbeelding";

$sql = "INSERT INTO kittendata ('$velden') VALUES ('$kitten'";

if (!mysqli_query($con,$sql))
  {

  die('Error' . mysqli_error($con));
  }

echo "1 record toegevoegd";

mysqli_close($con);
?>


Dit geeft nu een heel andere error:

ErrorYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''datum, geboren, toontot, nest, ras, vader, moeder, fokker, woonplaats, telefoon' at line 1

Houd dit nu in dat mijn code goed is maar dat er in de SQL server iets fout zit?

Wederom alvast bedankt voor het meedenken.

Groetjes,

Marco
 
- SanThe -

- SanThe -

11/04/2013 14:12:01
Quote Anchor link
Je gaat fout met de quootjes.
 
- Ariën  -
Beheerder

- Ariën -

11/04/2013 14:17:53
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$kitten = "mysqli_real_escape_string($_POST[fdatum]),mysqli_real_escape_string($_POST[fgeboren]),mysqli_real_escape_string($_POST[ftoontot]),mysqli_real_escape_string($_POST[fnest]),mysqli_real_escape_string($_POST[fras]),mysqli_real_escape_string($_POST[fvader]),mysqli_real_escape_string($_POST[fmoeder]),mysqli_real_escape_string($_POST[fwoonplaats]),mysqli_real_escape_string($_POST[ftelefoon]),mysqli_real_escape_string($_POST[femail]),mysqli_real_escape_string($_POST[fwebsite]),mysqli_real_escape_string($_POST[fafbeelding])";


Dit klopt ook niet, waarom maak je een string?
 
TJVB tvb

TJVB tvb

11/04/2013 14:41:58
Quote Anchor link
En daarnaast mis je 1 waarde (bij het bepalen van je kolommen heb je een kolom fokker, maar die ziet niet in je insert) Je zal als de rest werkt Column count doesn't match value count error krijgen.
 
Marco Apeldoorn

Marco Apeldoorn

11/04/2013 14:44:19
Quote Anchor link
Aar,

Ik raakte de draad zelf kwijt in de code, ondanks de goede bedoelingen van mensen zoals SanThe kwam ik er niet uit.

Programmeren is voor mij niet nieuw, alleen heel lang geleden (de tijd van BASIC), waar het makkelijker lag.

Dus hoe moet ik die string dan maken?

De quootjes zijn zeker mysqli_real_escape_string($_POST['fdatum'])



Toevoeging op 11/04/2013 15:01:12:

Ben terug gegaan naar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
$sql
= "INSERT INTO kittendata (
datum,
geboren,
toontot,
nest,
ras,
vader,
moeder,
fokker,
woonplaats,
telefoon,
email,
website,
afbeelding
) VALUES (
'"
.mysqli_real_escape_string($con, $_POST['fdatum'])."',
'"
.mysqli_real_escape_string($con, $_POST['fgeboren'])."',
'"
.mysqli_real_escape_string($con, $_POST['ftoontot'])."',
'"
.mysqli_real_escape_string($con, $_POST['fnest'])."',
'"
.mysqli_real_escape_string($con, $_POST['fras'])."',
'"
.mysqli_real_escape_string($con, $_POST['fvader'])."',
'"
.mysqli_real_escape_string($con, $_POST['fmoeder'])."',
'"
.mysqli_real_escape_string($con, $_POST['fwoonplaats'])."',
'"
.mysqli_real_escape_string($con, $_POST['ftelefoon'])."',
'"
.mysqli_real_escape_string($con, $_POST['femail'])."',
'"
.mysqli_real_escape_string($con, $_POST['fwebsite'])."',
'"
.mysqli_real_escape_string($con, $_POST['fafbeelding'])."'
"
;

if (!mysqli_query($con,$sql))
  {

  die('Error' . mysqli_error($con));
  }

echo "1 record toegevoegd";

mysqli_close($con);
?>


Lijkt mij dat alle quotetjes staan lijkt mij nu goed, en bij mysqli_real_escape_string staat nu de parameter die miste.

De error is

ErrorYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 27



Toevoeging op 11/04/2013 15:04:54:

Herstel, miste de sluit ) voor de values, staat er nu in.

Toevoeging op 11/04/2013 15:08:43:



Yipie, krijg nu "1 record toegevoegd"

Kan verder met de verdere dingen die met de database moeten gebeuren

Thanks ALLEMAAL! :-)

Toevoeging op 12/04/2013 10:52:18:

Hoi,

Er is iets misgegaan, de code werkte, maar nu opeens niet meer

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php

$tabel
="kittendata";
$dbhost = "localhost";
$dbdb = "spcadmin_kitten";
$dbgebruiker = "***********";
$dbww = "**********";

mysql_connect($dbhost,$dbgebruiker,$dbww) or die(mysql_error());
mysql_select_db($dbdb) or die(mysql_error());

$sql = "INSERT INTO kittendata (
datum,
geboren,
toontot,
nest,
ras,
vader,
moeder,
fokker,
woonplaats,
telefoon,
email,
website,
foto
) VALUES (
'"
.mysqli_real_escape_string($con, date('Y-m-d', strtotime("+0 days")))."',
'"
.mysqli_real_escape_string($con, $_POST['fgeboren'])."',
'"
.mysqli_real_escape_string($con, date('Y-m-d', strtotime("+92 days")))."',
'"
.mysqli_real_escape_string($con, $_POST['fnest'])."',
'"
.mysqli_real_escape_string($con, $_POST['fras'])."',
'"
.mysqli_real_escape_string($con, $_POST['fvader'])."',
'"
.mysqli_real_escape_string($con, $_POST['fmoeder'])."',
'"
.mysqli_real_escape_string($con, $_POST['fwoonplaats'])."',
'"
.mysqli_real_escape_string($con, $_POST['ftelefoon'])."',
'"
.mysqli_real_escape_string($con, $_POST['femail'])."',
'"
.mysqli_real_escape_string($con, $_POST['fwebsite'])."',
'"
.mysqli_real_escape_string($con, $_POST['fafbeelding'])."'
)"
;

if (!mysqli_query($con,$sql))
  {

  die('Error' . mysqli_error($con));
  }

mysqli_close($con);
header('Location: kittensadmin.html');
?>


Weet iemand wat er is fout gegaan?
Het script staat inmiddels wel in andere map, maar daar werkte het tot nu toe ook.

Groetjes,

Marco
 
- SanThe -

- SanThe -

12/04/2013 11:26:28
Quote Anchor link
TJVB tvb op 11/04/2013 14:41:58:
En daarnaast mis je 1 waarde (bij het bepalen van je kolommen heb je een kolom fokker, maar die ziet niet in je insert) Je zal als de rest werkt Column count doesn't match value count error krijgen.


Wel je reacties lezen.


moeder,
fokker,
woonplaats,

'".mysqli_real_escape_string($con, $_POST['fmoeder'])."',
'".mysqli_real_escape_string($con, $_POST['fwoonplaats'])."',
'
 
Koen Hollander

Koen Hollander

12/04/2013 11:47:11
Quote Anchor link
Waarom gooi je MySQL en MySQLi door elkaar? Je maakt verbinding via SQL(Regel 9 en 10) en je escpaed via MySQLi (Regel 27t/m 28).
 
Marco Apeldoorn

Marco Apeldoorn

12/04/2013 12:00:31
Quote Anchor link
Santhe,

Idd, die regel miste, maar heeft geen invloed op de errors.

Ben er ook achter wat de fout was, met copy en past was er iets mis gegaan.

Thanks


Toevoeging op 12/04/2013 12:41:10:

Koen,

Dat was dus de fout die met copy en paste fout was gegaan.....
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.