Avatar billede tomb3 Nybegynder
27. januar 2006 - 20:39 Der 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";
}
?>




====== opreside.htm ======

<form method="post" action="opretside.php">
  <b>Sidenavn:</b><br>
  <input type="text" name="id"><br>
  <input type="submit" value="Opret">
</form>
Avatar billede nielle Nybegynder
27. januar 2006 - 20:58 #1
Man bruger ikke INSERT INTO sammen med WHERE.
Avatar billede nielle Nybegynder
27. januar 2006 - 21:00 #2
Prøv dette i stedet:

$sql = "INSERT INTO side SET id ='" . mysql_real_escape_string($id) . "'";
Avatar billede nielle Nybegynder
27. januar 2006 - 21:00 #3
... eller (med standard SQL):

$sql = "INSERT INTO side (id) VALUES ('" . mysql_real_escape_string($id) . "')";
Avatar billede tomb3 Nybegynder
27. januar 2006 - 21:09 #4
Får:

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'"
Avatar billede nielle Nybegynder
27. januar 2006 - 21:28 #5
Prøv at gøre sådan her:

$sql = "INSERT INTO side SET id ='" . mysql_real_escape_string($id) . "'";
echo "DEBUG: " . $sql . "<br>";
$query = mysql_query($sql) or die(mysql_error());
Avatar billede nielle Nybegynder
27. januar 2006 - 21:43 #6
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.
Avatar billede tomb3 Nybegynder
27. januar 2006 - 23:28 #7
DEBUG: INSERT INTO side SET id ='test4'
Side tilføjet.


Samme fejl når man vil se siden:
"Unknown column 'test4' in 'where clause'"
Avatar billede tomb3 Nybegynder
28. januar 2006 - 00:09 #8
$sql = "SELECT tekst FROM side WHERE id=" . $_GET["id"];

rettet til:

$sql = "SELECT tekst FROM side WHERE id='".$_GET['id']."'";


Så kører det :)

nielle> Takker.. smid svar
Avatar billede nielle Nybegynder
28. januar 2006 - 09:00 #9
Værsgo, et svar :^)

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.
Avatar billede nielle Nybegynder
06. februar 2006 - 18:24 #10
Så mangler du egentlig bare at acceptere svaret :^)
Avatar billede nielle Nybegynder
13. februar 2006 - 20:32 #11
Jaae?
Avatar billede tomb3 Nybegynder
24. februar 2006 - 20:42 #12
Sorry... Har haft ret meget om ørende på det sidste.

Tak for hjælpen :)
Avatar billede tomb3 Nybegynder
24. februar 2006 - 20:44 #13
ørene* ;)
Avatar billede nielle Nybegynder
24. februar 2006 - 20:46 #14
Takker for point :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel