27. januar 2006 - 20:39Der er
13 kommentarer og 1 løsning
Fejl ved oprettelse af side i SQL / You have an error in your SQL
Hvor ligger fejlen?
På opretside.htm skriver jeg et id, som opretside.php efterfølgende skal oprette i min database, men får fejlen:
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 'WHERE id='test'' at line 1
====== opretside.php ======
<? require_once("db.php");
$id = $_POST["id"]; if ($id) { $sql = "INSERT INTO side WHERE id='" . mysql_real_escape_string($id) . "'"; $query = mysql_query($sql) or die(mysql_error()); $row = mysql_fetch_assoc($query);
$id = $row["id"];
echo "Side tilføjet."; } else { include "opretside.htm"; } ?>
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in opretside.php on line 26 Side tilføjet.
Den tilføjer siden og kan se den i list.php som vi lavet i det andet spørgsmål. Men når jeg vil se siden, får skriver den "Unknown column 'test1' in 'where clause'"
$sql = "INSERT INTO side SET id ='" . mysql_real_escape_string($id) . "'"; echo "DEBUG: " . $sql . "<br>"; $query = mysql_query($sql) or die(mysql_error());
Det giver forresten ikke specielt mening at kalde mysql_fetch_assoc() på en INSERT. Der bliver jo ikke kentet noget ud. Det er nok med mysql_query()'en.
Inden at vi slutter her så synes jeg lige at du bør kigge på 27/01-2006 21:00:05 og 27/01-2006 21:00:42 igen. De gør faktisk det samme, og forskellen er blot at den sidste det er standard SQL, mens at den første er en syntaks som MySQL-folkene har indført.
Normalt ville dette ikke betyde noget, Men hvis du nogensinde skulle kunne finde på at ville overføre dine scripts fra MySQL til en anden database (Access, eller MS SQL, eller måske endda Oracle) så vil du få problemer med at dine SQL-kommandoer pludselig ikke virker mere.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.