problemen met INSERT
Via een form in mijn PHP website zou ik de gegevens willen wegschrijven in mijn database maar ik krijg telkens een foutmelding.
namelijk
Error: INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it) VALUES (Atheneum Maasland - Campus Dilsen, 209, hoog, Wed Jun 01, Tilly, 5, computer_probleem, jfsldfds, Gert Molemans, test, Gert Molemans)
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Maasland - Campus Dilsen, 209, hoog, Wed Jun 01, Tilly, 5, computer_probleem, j' at line 1
lokaal: 209
soort probleem: computer_probleem
toestel: 5
onderwerp: test
beschrijving: jfsldfds
urgentie: hoog
mijn colde is
Code (php)
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
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
<html>
<head>
</head>
<body>
<?php
$conn = new mysqli('localhost', 'root', '', 'db_helpdesk')
or die ('Cannot connect to db');
$datum = date("D M d");
$sql = "INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it) VALUES (Atheneum Maasland - Campus Dilsen, ".$_POST['ddmlokaal'].", ".$_POST['ddmurgentie'].", ".$datum.", Tilly, ".$_POST['txttoestel'].", ".$_POST['ddmsoort_probleem'].", ".$_POST['txtbeschrijving'].", Gert Molemans, ".$_POST['txtonderwerp'].", Gert Molemans)";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
<p>lokaal: <?php echo $_POST["ddmlokaal"]; ?> </p>
<p>soort probleem: <?php echo $_POST["ddmsoort_probleem"]; ?> </p>
<p>toestel: <?php echo $_POST["txttoestel"]; ?> </p>
<p>onderwerp: <?php echo $_POST["txtonderwerp"]; ?> </p>
<p>beschrijving: <?php echo $_POST["txtbeschrijving"]; ?> </p>
<p>urgentie: <?php echo $_POST["ddmurgentie"]; ?> </p>
</body>
</html>
<head>
</head>
<body>
<?php
$conn = new mysqli('localhost', 'root', '', 'db_helpdesk')
or die ('Cannot connect to db');
$datum = date("D M d");
$sql = "INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it) VALUES (Atheneum Maasland - Campus Dilsen, ".$_POST['ddmlokaal'].", ".$_POST['ddmurgentie'].", ".$datum.", Tilly, ".$_POST['txttoestel'].", ".$_POST['ddmsoort_probleem'].", ".$_POST['txtbeschrijving'].", Gert Molemans, ".$_POST['txtonderwerp'].", Gert Molemans)";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
<p>lokaal: <?php echo $_POST["ddmlokaal"]; ?> </p>
<p>soort probleem: <?php echo $_POST["ddmsoort_probleem"]; ?> </p>
<p>toestel: <?php echo $_POST["txttoestel"]; ?> </p>
<p>onderwerp: <?php echo $_POST["txtonderwerp"]; ?> </p>
<p>beschrijving: <?php echo $_POST["txtbeschrijving"]; ?> </p>
<p>urgentie: <?php echo $_POST["ddmurgentie"]; ?> </p>
</body>
</html>
Ziet iemand wat ik fout doe?
Alvast bedankt
Groeten Gert
Gewijzigd op 01/06/2016 09:54:09 door Gert Molemans
De tekst moet tussen (enkele) quotes staan.
Nu krijg ik nog een andere fout
Notice: Undefined index: txttoestel in C:\xampp\htdocs\helpdesk\ticketopslaan.php on line 12
Error: INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it) VALUES ('Atheneum Maasland - Campus Dilsen', 209, hoog, Wed Jun 01, 'Tilly', , computer_probleem, jfsldfds, 'Gert Molemans', test, 'Gert Molemans')
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Jun 01, 'Tilly', , computer_probleem, jfsldfds, 'Gert Molemans', test, 'Gert Mo' at line 1
lokaal: 209
soort probleem: computer_probleem
toestel:
Notice: Undefined index: txttoestel in C:\xampp\htdocs\helpdesk\ticketopslaan.php on line 24
onderwerp: test
beschrijving: jfsldfds
urgentie: hoog
Code (php)
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
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
<html>
<head>
</head>
<body>
<?php
$conn = new mysqli('localhost', 'root', '', 'db_helpdesk')
or die ('Cannot connect to db');
$datum = date("D M d");
$sql = "INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it) VALUES ('Atheneum Maasland - Campus Dilsen', ".$_POST['ddmlokaal'].", ".$_POST['ddmurgentie'].", ".$datum.", 'Tilly', ".$_POST['txttoestel'].", ".$_POST['ddmsoort_probleem'].", ".$_POST['txtbeschrijving'].", 'Gert Molemans', ".$_POST['txtonderwerp'].", 'Gert Molemans')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
<p>lokaal: <?php echo $_POST["ddmlokaal"]; ?> </p>
<p>soort probleem: <?php echo $_POST["ddmsoort_probleem"]; ?> </p>
<p>toestel: <?php echo $_POST["txttoestel"]; ?> </p>
<p>onderwerp: <?php echo $_POST["txtonderwerp"]; ?> </p>
<p>beschrijving: <?php echo $_POST["txtbeschrijving"]; ?> </p>
<p>urgentie: <?php echo $_POST["ddmurgentie"]; ?> </p>
</body>
</html>
<head>
</head>
<body>
<?php
$conn = new mysqli('localhost', 'root', '', 'db_helpdesk')
or die ('Cannot connect to db');
$datum = date("D M d");
$sql = "INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it) VALUES ('Atheneum Maasland - Campus Dilsen', ".$_POST['ddmlokaal'].", ".$_POST['ddmurgentie'].", ".$datum.", 'Tilly', ".$_POST['txttoestel'].", ".$_POST['ddmsoort_probleem'].", ".$_POST['txtbeschrijving'].", 'Gert Molemans', ".$_POST['txtonderwerp'].", 'Gert Molemans')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
<p>lokaal: <?php echo $_POST["ddmlokaal"]; ?> </p>
<p>soort probleem: <?php echo $_POST["ddmsoort_probleem"]; ?> </p>
<p>toestel: <?php echo $_POST["txttoestel"]; ?> </p>
<p>onderwerp: <?php echo $_POST["txtonderwerp"]; ?> </p>
<p>beschrijving: <?php echo $_POST["txtbeschrijving"]; ?> </p>
<p>urgentie: <?php echo $_POST["ddmurgentie"]; ?> </p>
</body>
</html>
Groeten en bedankt
Gert
Je hebt nog steeds tekst in de query zonder (enkele) quotes.
Data uit een formulier is gevaarkijk.
Altijd userinput beveiligen.
dus:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$sql = "INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it)
VALUES (
'Atheneum Maasland - Campus Dilsen'
, '".mysqli_real_escape_string($conn, $_POST['ddmlokaal'])."'
, '".mysqli_real_escape_string($conn, $_POST['ddmurgentie'])."'
, '".mysqli_real_escape_string($conn, $datum)."'
, 'Tilly'
, '".mysqli_real_escape_string($conn, $_POST['txttoestel'])."'
, '".mysqli_real_escape_string($conn, $_POST['ddmsoort_probleem'])."'
, '".mysqli_real_escape_string($conn, $_POST['txtbeschrijving'])."'
, 'Gert Molemans'
, '".mysqli_real_escape_string($conn, $_POST['txtonderwerp'])."'
, 'Gert Molemans'
)";
$sql = "INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it)
VALUES (
'Atheneum Maasland - Campus Dilsen'
, '".mysqli_real_escape_string($conn, $_POST['ddmlokaal'])."'
, '".mysqli_real_escape_string($conn, $_POST['ddmurgentie'])."'
, '".mysqli_real_escape_string($conn, $datum)."'
, 'Tilly'
, '".mysqli_real_escape_string($conn, $_POST['txttoestel'])."'
, '".mysqli_real_escape_string($conn, $_POST['ddmsoort_probleem'])."'
, '".mysqli_real_escape_string($conn, $_POST['txtbeschrijving'])."'
, 'Gert Molemans'
, '".mysqli_real_escape_string($conn, $_POST['txtonderwerp'])."'
, 'Gert Molemans'
)";
Deze hoef je trouwens niet eerst in een aparte variabele op te slaan, maar kan rechtstreeks in je query, bijvoorbeeld als volgt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$conn->query(
"INSERT INTO table (
a, b, c, d
) VALUES (
'".$conn->real_escape_string($_POST['a'])."',
'".$conn->real_escape_string($_POST['b'])."',
'".$conn->real_escape_string($_POST['c'])."',
'".$conn->real_escape_string($_POST['d'])."'
)"
);
?>
$conn->query(
"INSERT INTO table (
a, b, c, d
) VALUES (
'".$conn->real_escape_string($_POST['a'])."',
'".$conn->real_escape_string($_POST['b'])."',
'".$conn->real_escape_string($_POST['c'])."',
'".$conn->real_escape_string($_POST['d'])."'
)"
);
?>
En als je 3x real_escape_string() hebt uitgetypt heb je hier waarschijnlijk ook genoeg van en schrijf je een klein wrappertje voor MySQLi om hier sneller mee te werken.
Gewijzigd op 01/06/2016 12:52:08 door Thomas van den Heuvel
Thomas van den Heuvel op 01/06/2016 12:50:47:
CTRL+C en CTRL+V?En als je 3x real_escape_string() hebt uitgetypt heb je hier waarschijnlijk ook genoeg van en schrijf je een klein wrappertje voor MySQLi om hier sneller mee te werken.
Ctrl+D met de D van duplicate en dupliceren: maakt in sommige editors een kopie van de huidige regel. :D
Ja dat werkt Ward (in Notepad++). Handig!
ik ga het morgen eens uit proberen.
Groeten Gert
Allemaal heel erg bedankt
Groeten Gert