Mijn (beginners)scriptje loopt bij het begin al vast sql geeft een :query is empty" fout terug: Zie iets over het hoofd, maar weet niet wat?

Dit is het script:

<?php
$con = mysql_connect("localhost","*****","*****");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}mysql_select_db("europese", $con);
$tUnixTime = time();
$InvoerMoment = gmdate("Y-m-d H:i:s", $tUnixTime + 7200);

$sql1="INSERT INTO bestelling (naam, adres, woonplaats, email, telefoon, invoermoment)
VALUES('$_POST[naam]','$_POST[adres]','$_POST[woonplaats]','$_POST[email]','$_POST[telefoon]','$InvoerMoment')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added in kweker";

mysql_close($con);

}
}
?>
<?php
$sql1="INSERT INTO bestelling (naam, adres, woonplaats, email, telefoon, invoermoment)
VALUES('$_POST[naam]','$_POST[adres]','$_POST[woonplaats]','$_POST[email]','$_POST[telefoon]','$InvoerMoment')";
if (!mysql_query($sql,$con))
?>

Kijk 's goed.

Overigens, gebruik geen die() in je scripts!
jaaaaaaaaaaaaaaaaaaa quote te veel bij $_post[naam]
heb de quote weggehaald, maar de foutmelding blijft
Lol, neen. Overigens moet je daar nog wel even naar kijken, want dit stukje is zo lek als een mandje. Het zit hem in $sql1 en $sql, maar vergeet niet naar [google]SQL Injection[/google] te kijken, want dat is van toepassing op jouw script.

Edit: een exacte datum(tijd) in voeren in de database gaat via de SQL functie NOW() of de SQL constante CURRENT_DATE. Dan hoef je in PHP daar niet meer mee te gaan klooien.

<?php
sql1="INSERT INTO bestelling (naam, adres, woonplaats, email, telefoon, invoermoment)
VALUES('".$_POST['naam']."','".$_POST['adres']."','".$_POST['woonplaats']."','".$_POST['email']."','".$_POST['telefoon']."', NOW())";
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
?>


Tevens, als je maar 1 mysql connectie heb, hoef je die niet perse in de query te zetten. Ten tweede, wil ik je er graag op wijzen dat je de input van de gebruiker nog moet escapen ([php]mysql_real_escape_string[/php]).

Als er nog steeds een foutmelding komt, moet je die even hier plaatsen ;-)

Greetz

P.S. Vergelijk jouw SQL even met de mijne ;-)
$sql1="......";
if (!mysql_query($sql,$con))

$sql1 <> $sql

Zet error_reporting aan en je had dit allang gezien.
Php denk dat $sql niet bestaat omdat je $sql1 gebruikt. Maar waarom kun je niet mysql_query("SELECT blabla"); doen? Hoef je toch niet in een var te zetten, want als je het goed doet, heb je de query daarna niet meer nodig.
Tommy schreef op 29.01.2009 07:50
Maar waarom kun je niet mysql_query("SELECT blabla"); doen? Hoef je toch niet in een var te zetten, want als je het goed doet, heb je de query daarna niet meer nodig.
Domme opmerking. De query die binnen mysql_query() staat, kun je onmogelijk echoen en dus erg lastig debuggen. Wanneer je een foutmelding terugkrijgt van de database, begint die vrijwel altijd net ná het begin van de foutmelding. Datgene wat je dus fout doet, krijg je net niet te zien...

echo $sql; had dit probleem voor je opgelost, maar dankzij de blunder om de query rechtstreeks in de functie te zetten, gaat dit niet werken. Niet doen dus.
pgFrank schreef op 29.01.2009 08:05
[quote='Tommy schreef op 29.01.2009 07:50']Maar waarom kun je niet mysql_query("SELECT blabla"); doen? Hoef je toch niet in een var te zetten, want als je het goed doet, heb je de query daarna niet meer nodig.
Domme opmerking. De query die binnen mysql_query() staat, kun je onmogelijk echoen en dus erg lastig debuggen. Wanneer je een foutmelding terugkrijgt van de database, begint die vrijwel altijd net ná het begin van de foutmelding. Datgene wat je dus fout doet, krijg je net niet te zien...

echo $sql; had dit probleem voor je opgelost, maar dankzij de blunder om de query rechtstreeks in de functie te zetten, gaat dit niet werken. Niet doen dus.[/quote]

Sowieso als ik een query maak voer ik 'em eerst altijd uit in PMA. En ik maak over het algemeen dit soort fouten niet omdat ik gewoon heel consequent bent in het benoemen van variabelen en ik noem ze daarom ook niet $sql of $sql1 voor een andere query, ik geef een goeie naam ;)

Edit: als error reporting aan had gestaan, dan was het probleem net zo snel opgelost.

Reageren