Beste Leden,
Ik heb de volgende code:Deze geeft de volgende meldingCode:$sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES($name = $_POST['name'], $email = $_POST['email'], $comment = $_POST['comment'], '$datetime')"; $result=mysql_query($sql);
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
Wat doe ik verkeerd?
- INSERT INTO werkt niet
-
16-09-2013, 16:20 #1
- Berichten
- 1.190
- Lid sinds
- 14 Jaar
INSERT INTO werkt niet
-
-
16-09-2013, 16:24 #2
- Berichten
- 1.470
- Lid sinds
- 19 Jaar
Re: INSERT INTO werkt niet
$sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES('".$_POST['name']."', '".$_POST['email']."','".$_POST['comment']."', '".$datetime."')"; $result=mysql_query($sql);
-
16-09-2013, 16:25 #3
- Berichten
- 35
- Lid sinds
- 17 Jaar
Re: INSERT INTO werkt niet
heel goed, als je niet weet wat je aan doen bent kan je het beter laten....
als je dit zo zou implementeren dan zal de boel open staan voor sql injecties...
Het probleem ligt bij de '$datetime'
-
16-09-2013, 16:27 #4
- Berichten
- 442
- Lid sinds
- 16 Jaar
Re: INSERT INTO werkt niet
Het zou op deze manier moeten werken:
PHP Code:INSERT INTO $tbl_name(name, email, comment, datetime)VALUES($_POST['name'], $_POST['email'], $_POST['comment'], $datetime)
Ik raad je aan om met PDO te werken. Hier kan je er mee over lezen: http://php.net/manual/en/book.pdo.php
Hiermee kan je prepared statements gebruiken en is dus veiliger.
Zo dus:
PHP Code:$stmt = $dbh->prepare("INSERT INTO table_name (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
-
16-09-2013, 16:33 #5
- Berichten
- 1.190
- Lid sinds
- 14 Jaar
Re: INSERT INTO werkt niet
Hallo Ben,
Krijg helaas weer dezelfde melding, gehele code ziet er als volgt uit:
Code:// Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("cannot connect server "); mysql_select_db("$db_name")or die("cannot select DB"); $datetime=date("y-m-d h:i:s"); //date time $sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES($_POST['name'], $_POST['email'], $_POST['comment'], $datetime)"; $result=mysql_query($sql); //check if query successful if($result){ echo "Successful"; echo "<BR>"; // link to view guestbook page echo "<a href='viewguestbook.php'>View guestbook</a>"; } else { echo "ERROR"; } mysql_close(); ?>
-
16-09-2013, 18:40 #6
- Berichten
- 1.470
- Lid sinds
- 19 Jaar
-
16-09-2013, 20:08 #7
- Berichten
- 200
- Lid sinds
- 15 Jaar
Re: INSERT INTO werkt niet
Hallo Ben,
Krijg helaas weer dezelfde melding, gehele code ziet er als volgt uit:
Code:// Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("cannot connect server "); mysql_select_db("$db_name")or die("cannot select DB"); $datetime=date("y-m-d h:i:s"); //date time $sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES($_POST['name'], $_POST['email'], $_POST['comment'], $datetime)"; $result=mysql_query($sql); //check if query successful if($result){ echo "Successful"; echo "<BR>"; // link to view guestbook page echo "<a href='viewguestbook.php'>View guestbook</a>"; } else { echo "ERROR"; } mysql_close(); ?>
In feite verklaar jij je user input nu als veilig, iets wat je nooit mag doen.
Stel dat iemand nou in de "$_POST['comment']" iets zet als;
blaat ) drop table users --
(even simpel voorbeeld)
Dan kun je in feite alles doen.
-
16-09-2013, 21:59 #8
- Berichten
- 156
- Lid sinds
- 14 Jaar
Re: INSERT INTO werkt niet
Puur om je probleem op te lossen (ik ga verder niet in op de eerder genoemde veiligheid):
Je moet wel je variabele '$tbl_name' een waarde geven. Op dit moment voeg je een waarde in in een tabel zonder naam, iets wat niet kan. Geef eerst:
$tbl_name = 'TABELNAAM';
Dan zou ie moeten werken :)
Succes!
-
17-09-2013, 08:26 #9
- Berichten
- 690
- Lid sinds
- 15 Jaar
Re: INSERT INTO werkt niet
Tip: vervang $result=mysql_query($sql); met $result=mysql_query($sql) or die(mysql_error()); zodat je weet wat er fout gaat.
Tip: Gebruik PDO
Tip: Lees wat meer over veiligheid.
-
17-09-2013, 09:28 #10
- Berichten
- 980
- Lid sinds
- 17 Jaar
Re: INSERT INTO werkt niet
Arrays in double-quote strings worden niet automatisch vervangen in PHP:
PHP Code:$sql="INSERT INTO $tbl_name (name, email, comment, datetime) VALUES ('{$_POST['name']}','{$_POST['email']}','{$_POST['comment']}','$datetime')";
-
19-09-2013, 19:30 #11
- Berichten
- 28
- Lid sinds
- 11 Jaar
Re: INSERT INTO werkt niet
Zo werkt het bij mij:
$sql="INSERT INTO ".$tbl_name."('name', 'email', 'comment', 'datetime') VALUES ('".$_POST['name']."', '".$_POST['email']."', '".$_POST['comment']."', '".$datetime."')";$result=mysql_query($sql);
-
19-09-2013, 20:06 #12
- Berichten
- 100
- Lid sinds
- 13 Jaar
Re: INSERT INTO werkt niet
Helaas is het wel zo onveilig als het maar zijn kan..
-
19-09-2013, 20:22 #13
- Berichten
- 28
- Lid sinds
- 11 Jaar
Re: INSERT INTO werkt niet
$sql="INSERT INTO ".$tbl_name."('name', 'email', 'comment', 'datetime') VALUES ('".mysql_real_escape_string($_POST['name'])."', '".mysql_real_escape_string($_POST['email'])."', '".mysql_real_escape_string($_POST['comment'])."', '".$datetime."')"; $result=mysql_query($sql);
Zo beter?
-
08-10-2013, 23:42 #14
- Berichten
- 186
- Lid sinds
- 17 Jaar
Re: INSERT INTO werkt niet
Hallo Michelle,
Is het ondertussen wel gelukt? Ik zag nog geen reactie van je staan dat het reeds gelukt is.
Indien het nog niet gelukt is, probeer dan het volgende eens:
PHP Code:<?php
$name = $_POST['name'];$name = mysql_real_escape_string($name);
$email = $_POST['email'];$email = mysql_real_escape_string($email);
$comment = $_POST['comment'];$comment = mysql_real_escape_string($comment);
$datetime=date("y-m-d h:i:s");
mysql_query("INSERT INTO OnbekendeNamen (name, email, comment, datetime) VALUES ('$name', '$email', '$comment', '$datetime')")or die(mysql_error());
?>
-
09-10-2013, 06:00 #15
- Berichten
- 501
- Lid sinds
- 18 Jaar
Re: INSERT INTO werkt niet
Je gebruikt e kolomnaam datetime dit is en reserveerd woord in MySQL dus even `datetime` voor je datetime zeten.
Tja en dat het niet veilig is weet je ondertussen.
Succes
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic