syntax fout
eric - 15/06/2005 19:51
HTML interesse
ik heb een hele vreemde fout, het script hieronder werkt op mn ene host wel en bij de andere server van dezelfde host niet daar zegt die dit: You 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 1
<?php
if(isset($_GET['id'])){
$id = $_GET["id"];
$query="SELECT * FROM nieuws WHERE id = '$id'";
$result = mysql_query($query) or die (mysql_error());
$show = mysql_fetch_object($result);
echo "<table border='1' bordercolor='#000000' cellspacing='0' style='border-collapse: collapse;' cellspacing='0' width='90%'>\n";
echo " <tr>\n";
echo " <td colspan='2'><b>$show->titel</b></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td colspan='2'>".nl2br($show->bericht)."</td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td width='250'><a href='javascript:history.back()'>Terug</a></td>\n";
echo " <td width='250' align='left'>Gepost op: $show->datum</td>\n";
echo " </tr>\n";
echo "</table>\n<br>\n";
if (isset($_POST['submit'])) {
$nid = $_POST["nid"];
$naam = $_POST["naam"];
$email = $_POST["email"];
$reactie = $_POST["reactie"];
if ($naam=="")
{ $error=$error."<table cellspacing='0' width='90%'><tr><td align='center'><span style='color:red'><font>Je hebt geen <b>naam</b> ingevuld!</font></span></td></tr></table>\n"; }
if ($email=="")
{ $error=$error."<table cellspacing='0' width='90%'><tr><td align='center'><span style='color:red'><font>Je hebt geen <b>email</b> ingevuld!</font></span></td></tr></table>\n"; }
if ($reactie=="")
{ $error=$error."<table cellspacing='0' width='90%'><tr><td align='center'><span style='color:red'><font>Je hebt geen <b>reactie</b> ingevuld!</font></span></td></tr></table>\n"; }
if ($error) {
?>
<table border='1' bordercolor='#000000' cellspacing='0' style='border-collapse: collapse;' cellpadding='0' cellspacing='0' width='90%'>
<tr>
<td>Reageer</td>
</tr>
<tr>
<td><?php echo $error; ?></td>
</tr>
</table>
<?php
}else {
$query="INSERT INTO nieuwsreacties (nid, naam, email, reactie) VALUES ('$nid', '$naam', '$email', '$reactie');";
mysql_query($query) or die(mysql_error());
?>
<table border='1' bordercolor='#000000' cellspacing='0' style='border-collapse: collapse;' cellpadding='0' cellspacing='0' width='90%'>
<tr>
<td>Reageer</td>
</tr>
<tr>
<td align='center'>Reactie is succesvol toegevoegd!<br><a href='<?php echo $_SERVER["REQUEST_URI"]; ?>'>Klik hier</a> om naar het nieuwsbericht te gaan.</td>
</tr>
</table>
<?php
}
}else {
$query="SELECT * FROM nieuwsreacties WHERE nid = '$id'";
$result = mysql_query($query) or die (mysql_error());
while ($show = mysql_fetch_object($result)) {
echo "<table border='1' bordercolor='#000000' cellspacing='0' style='border-collapse: collapse;' cellpadding='0' cellspacing='0' width='90%'>\n";
echo " <tr>\n";
echo " <td>Door: <a href='mailto:$show->email'>$show->naam</a></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td>$show->reactie</td>\n";
echo " </tr>\n";
echo "</table>\n<br>\n";
}
echo "<form action='' method='post'>\n";
echo "<table border='1' bordercolor='#000000' cellspacing='0' style='border-collapse: collapse;' cellpadding='0' cellspacing='0' width='90%'>\n";
echo " <tr>\n";
echo " <td>Reageer</td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td>\n";
echo " <table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
echo " <tr>\n";
echo " <td width='250'>Naam:</td>\n";
echo " <td width='250'><input type='text' name='naam' size='31'></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td width='250'>Email:</td>\n";
echo " <td width='250'><input type='text' name='email' size='31'></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td width='250' valign='top'>Reactie:</td>\n";
echo " <td width='250'><textarea name='reactie' rows='4' cols='25'></textarea></td>\n";
echo " </tr>\n";
echo " </table>\n";
echo " <center><input type='hidden' value='$id' name='nid'><input type='submit' value='Reageer' name='submit'> <input type='reset' value='Leegmaken' name='reset'></center>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "</form>\n";
}
}else {
$query = "SELECT * FROM nieuws ORDER BY id DESC LIMIT 0," . $limit . "";
$result = mysql_query($query) or die (mysql_error());
while ($show = mysql_fetch_object($result)) {
echo "<table border='1' bordercolor='#000000' style='border-collapse: collapse;' cellspacing='0' width='90%'>\n";
echo " <tr>\n";
echo " <td colspan='2'><b>$show->titel</b></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td colspan='2'>";
$langbericht = $show->bericht;
$maxlengte = 250;
if (strlen($langbericht) > $maxlengte) {
$afgekortbericht = substr($langbericht,0,247)."...";
} else {
$afgekortbericht = $langbericht;
}
echo nl2br($afgekortbericht);
echo "</td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td width='250'><a href='?id=$show->id'>Lees verder</a></td>\n";
echo " <td width='250' align='left'>Gepost op: $show->datum</td>\n";
echo " </tr>\n";
echo "</table>\n<br>\n";
}
}
?>
<?php
$id = $_GET [ "id" ] ;
$query = "SELECT * FROM nieuws WHERE id = '$id '" ;
echo "<table border='1' bordercolor='#000000' cellspacing='0' style='border-collapse: collapse;' cellspacing='0' width='90%'>\n " ; echo " <td colspan='2'><b>$show->titel </b></td>\n " ; echo " <td colspan='2'>" . nl2br ( $show -> bericht ) . "</td>\n " ; echo " <td width='250'><a href='javascript:history.back()'>Terug</a></td>\n " ; echo " <td width='250' align='left'>Gepost op: $show->datum </td>\n " ;
if ( isset ( $_POST [ 'submit' ] ) ) { $nid = $_POST [ "nid" ] ;
$naam = $_POST [ "naam" ] ;
$email = $_POST [ "email" ] ;
$reactie = $_POST [ "reactie" ] ;
if ( $naam == "" )
{ $error = $error . "<table cellspacing='0' width='90%'><tr><td align='center'><span style='color:red'><font>Je hebt geen <b>naam</b> ingevuld!</font></span></td></tr></table>\n " ; }
if ( $email == "" )
{ $error = $error . "<table cellspacing='0' width='90%'><tr><td align='center'><span style='color:red'><font>Je hebt geen <b>email</b> ingevuld!</font></span></td></tr></table>\n " ; }
if ( $reactie == "" )
{ $error = $error . "<table cellspacing='0' width='90%'><tr><td align='center'><span style='color:red'><font>Je hebt geen <b>reactie</b> ingevuld!</font></span></td></tr></table>\n " ; }
if ( $error ) {
?>
<table border='1' bordercolor='#000000' cellspacing='0' style='border-collapse: collapse;' cellpadding='0' cellspacing='0' width='90%'>
<tr>
<td>Reageer</td>
</tr>
<tr>
<td>
<?php echo $error ; ?> </td>
</tr>
</table>
<?php
} else {
$query = "INSERT INTO nieuwsreacties (nid, naam, email, reactie) VALUES ('$nid ', '$naam ', '$email ', '$reactie ');" ;
?>
<table border='1' bordercolor='#000000' cellspacing='0' style='border-collapse: collapse;' cellpadding='0' cellspacing='0' width='90%'>
<tr>
<td>Reageer</td>
</tr>
<tr>
<td align='center'>Reactie is succesvol toegevoegd!<br><a href='
<?php echo $_SERVER [ "REQUEST_URI" ] ; ?> '>Klik hier</a> om naar het nieuwsbericht te gaan.</td>
</tr>
</table>
<?php
}
} else {
$query = "SELECT * FROM nieuwsreacties WHERE nid = '$id '" ;
echo "<table border='1' bordercolor='#000000' cellspacing='0' style='border-collapse: collapse;' cellpadding='0' cellspacing='0' width='90%'>\n " ; echo " <td>Door: <a href='mailto:$show->email '>$show->naam </a></td>\n " ; echo " <td>$show->reactie </td>\n " ; }
echo "<form action='' method='post'>\n " ; echo "<table border='1' bordercolor='#000000' cellspacing='0' style='border-collapse: collapse;' cellpadding='0' cellspacing='0' width='90%'>\n " ; echo " <td>Reageer</td>\n " ; echo " <table border='0' cellpadding='0' cellspacing='0' width='100%'>\n " ; echo " <td width='250'>Naam:</td>\n " ; echo " <td width='250'><input type='text' name='naam' size='31'></td>\n " ; echo " <td width='250'>Email:</td>\n " ; echo " <td width='250'><input type='text' name='email' size='31'></td>\n " ; echo " <td width='250' valign='top'>Reactie:</td>\n " ; echo " <td width='250'><textarea name='reactie' rows='4' cols='25'></textarea></td>\n " ; echo " <center><input type='hidden' value='$id ' name='nid'><input type='submit' value='Reageer' name='submit'> <input type='reset' value='Leegmaken' name='reset'></center>\n " ; }
} else {
$query = "SELECT * FROM nieuws ORDER BY id DESC LIMIT 0," . $limit . "" ;
echo "<table border='1' bordercolor='#000000' style='border-collapse: collapse;' cellspacing='0' width='90%'>\n " ; echo " <td colspan='2'><b>$show->titel </b></td>\n " ; echo " <td colspan='2'>" ; $langbericht = $show -> bericht ;
$maxlengte = 250 ;
if ( strlen ( $langbericht ) > $maxlengte ) { $afgekortbericht = substr ( $langbericht , 0 , 247 ) . "..." ; } else {
$afgekortbericht = $langbericht ;
}
echo " <td width='250'><a href='?id=$show->id '>Lees verder</a></td>\n " ; echo " <td width='250' align='left'>Gepost op: $show->datum </td>\n " ; }
}
?>
11 antwoorden
Gesponsorde links
Fenrir - 15/06/2005 20:17
PHP expert
Ergens wordt een variabele niet goed in de query gezet. Dus controleer of alle variabelen kloppen die je in query's zet:
$query="INSERT INTO nieuwsreacties (nid, naam, email, reactie) VALUES ('$nid', '$naam', '$email', '$reactie');";
$query = "INSERT INTO nieuwsreacties (nid, naam, email, reactie) VALUES ('$nid ', '$naam ', '$email ', '$reactie ');" ;
Hebben deze variabelen ($nid, $naam, $email, $reactie) wel goede waarden?
Tuinstoel - 15/06/2005 20:17
PHP expert
addslashes() vergeten, ben het wel zeker.
simontjeuh - 15/06/2005 20:29 (laatste wijziging 15/06/2005 20:29)
HTML interesse
ik denk dat de fout hier zit:
$query="INSERT INTO nieuwsreacties (nid, naam, email, reactie) VALUES ('$nid', '$naam', '$email', '$reactie'); "; <-- die eerste ; dus
ik denk dat het zo moet zijn:
$query="INSERT INTO nieuwsreacties (nid, naam, email, reactie) VALUES ('$nid', '$naam', '$email', '$reactie')";
(ik heb opzettelijk geen [ code] gebruikt zodat je goed zou zien waar de fout zit)
eric - 15/06/2005 20:39 (laatste wijziging 16/06/2005 12:53)
HTML interesse
Heb het een beetje aan zitten passen maar werkt nog niet.
@tuinstoel waar zou ik dan addslashes() moeten gebruiken?
En het vreemde is dus dat die het op de ene server wel doet en op de andere niet. En als ik een id opgeef werkt het script wel gewoon :S
TFOL - 16/06/2005 15:30 (laatste wijziging 16/06/2005 15:31)
PHP beginner
zet de variabelen in die query is tussen '". ."' ipv ' '
dit dus:
<?php
//onderstaand stukje script:
$query="INSERT INTO nieuwsreacties (nid, naam, email, reactie) VALUES ('$nid', '$naam', '$email', '$reactie')";
//moet worden:
$query="INSERT INTO nieuwsreacties ('nid', 'naam', 'email', 'reactie') VALUES ('".$nid."', '".$naam."', '".$email."', '".$reactie."')";
/* --------------------------------------------- \\
| -> bij alle variabelen in query's moet dit <- |
\\ --------------------------------------------- */
?>
<?php
//onderstaand stukje script:
$query = "INSERT INTO nieuwsreacties (nid, naam, email, reactie) VALUES ('$nid ', '$naam ', '$email ', '$reactie ')" ;
//moet worden:
$query = "INSERT INTO nieuwsreacties ('nid', 'naam', 'email', 'reactie') VALUES ('" . $nid . "', '" . $naam . "', '" . $email . "', '" . $reactie . "')" ;
/* --------------------------------------------- \\
| -> bij alle variabelen in query's moet dit <- |
\\ --------------------------------------------- */
?>
Grtn Robin
eric - 17/06/2005 17:24
HTML interesse
Krijg nog steeds dezelfde fout. Ben er wel achter gekomen dat als ik het script in een iframe het wel werkt :S
leendertW - 17/06/2005 17:25 (laatste wijziging 17/06/2005 17:29)
PHP beginner
@TFOL
variabelen NIET tussen quotes!!
[edit]
probleem is blijkbaar al opgelost
nemesiskoen - 17/06/2005 17:28 (laatste wijziging 17/06/2005 17:29)
PHP expert
waarom nog zoveel reacties (foute) als de oplossing al is gegeven: tuinstoel had gelijk met zijn addslashes()
@leendertW
$query="SELECT * FROM nieuws WHERE id = " $id;
$query = "SELECT * FROM nieuws WHERE id = " $id ;
dat is ook fout
$query="SELECT * FROM nieuws WHERE id = ". $id;
$query = "SELECT * FROM nieuws WHERE id = " . $id ;
leendertW - 17/06/2005 17:29 (laatste wijziging 17/06/2005 17:30)
PHP beginner
nemesiskoen
@leendertW
#####
$query="SELECT * FROM nieuws WHERE id = " $id;
dat is ook fout
$query="SELECT * FROM nieuws WHERE id = ". $id;
####
ja typ foutje:p
waarom wordt dat dan niet vermeld.?
Gesponsorde links
Dit onderwerp is gesloten .