Gå til innhold

Anbefalte innlegg

Følgende kode fører til feilmeldingen:

 

"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in reserver.php on line 37

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 ""

 

Her er koden:

 

//connect to mysql
//change user and password to your mySQL name and password
mysql_connect("localhost","xxxxxx","xxxxxx"); 

//select which database you want to edit
mysql_select_db("xxxxxx"); 

//If cmd has not been initialized
if(!isset($cmd)) 
{
  //display all the news
  $result = mysql_query("select * from onskeliste order by id"); 

  //run the while loop that grabs all the news scripts
  while($r=mysql_fetch_array($result)) 
  { 
  //grab the title and the ID of the news
  $title=$r["produkt"];//take out the title
  $id=$r["id"];//take out the id

 //make the title a link
  echo "<a href='reserver.php?cmd=edit&id=$id'>$title - Reserver</a>";
  echo "<br>";
}
}
?>
<?
if($_GET["cmd"]=="edit" || $_POST["cmd"]=="edit")
{
  if (!isset($_POST["submit"]))
  {

  $id = $_GET["id"];
  $sql = "SELECT * FROM onskeliste WHERE id=$id";
  $result = mysql_query($sql);		
  $myrow = mysql_fetch_array($result) or die (mysql_error());
  ?>

  <form action="reserver.php" method="post">
  <input type=hidden name="id" value="<?php echo $myrow["id"] ?>">

  Fullt Navn:<INPUT TYPE="TEXT" NAME="res_navn" VALUE="<?php echo $myrow["res_navn"] ?>" SIZE=30><br>
  Telefonnummer:<TEXTAREA NAME="res_rlf" ROWS=10 COLS=30><? echo $myrow["res_tlf"] ?></TEXTAREA><br>
  Email:<INPUT TYPE="TEXT" NAME="res_mail" VALUE="<?php echo $myrow["res_mail"] ?>" SIZE=30><br>

  <input type="hidden" name="cmd" value="edit">

  <input type="submit" name="Reserver" value="submit">

  </form>

<? } ?>
<?
  if ($_POST["$submit"])
  {
  $res_navn = $_POST["res_navn"];
  $res_tlf = $_POST["res_tlf"];
  $res_mail = $_POST["res_mail"];

  $sql = "UPDATE onskeliste SET res_navn='$res_navn',res_tlf='$res_tlf',res_mail='$res_mail' WHERE id=$id";
  //replace news with your table name above
  $result = mysql_query($sql);
  echo "Takk for ditt bidrag!.";
}
}
?>

 

Feilen tror jeg ligger her:

 

$sql = "SELECT * FROM onskeliste WHERE id=$id";

 

Noen ideer???

Lenke til kommentar
Videoannonse
Annonse
Noen ideer???

Ved første øyekast ser jeg ikke noen åpenbar feil, annet enn at jeg ikke finner noen sjekk på hvorvidt $_GET["id"] eksisterer før du forsøker å lese ut en verdi derfra. Funksjonen array_key_exists funker til dette.

 

Prøv å skrive ut SQL-setningen som sendes inn til databasen slik at du kan verifisere om denne er korrekt. Det er alltid det første jeg gjør når jeg får database-relaterte feilmeldinger.

 

En annen sak, som ikke er direkte relatert til feilmeldingen din, er dette med å dytte en GET-parameter rett inn i en SQL-setning. Det er generelt en litt tvilsom greie i forhold til SQL-injections og denslags. Jeg foreslår å lese litt om funksjonene settype og mysql_real_escape_string.

Endret av alfred97
Lenke til kommentar
Noen ideer???

Ved første øyekast ser jeg ikke noen åpenbar feil, annet enn at jeg ikke finner noen sjekk på hvorvidt $_GET["id"] eksisterer før du forsøker å lese ut en verdi derfra. Funksjonen array_key_exists funker til dette.

 

Takk for tipset. Har nå satt inn kode for array_key_exists, og den returnerer at den faktisk finner de id jeg spør den etter.

 

Problemet oppstår når jeg skal legge til informasjon i de nye feltene res_navn, res_tlf og res_mail. Scriptet henter helt fint ut produktene som ligger i databasen og setter de i en liste, men kommer opp med nevnte feilmelding når man skal lagre info i de nye feltene.

Lenke til kommentar
Problemet oppstår når jeg skal legge til informasjon i de nye feltene res_navn, res_tlf og res_mail. Scriptet henter helt fint ut produktene som ligger i databasen og setter de i en liste, men kommer opp med nevnte feilmelding når man skal lagre info i de nye feltene.

Gjorde du som jeg sa sist, og skrev ut sql-spørringen slik at du kunne kontrollere at den ble riktig? Feilmeldingen sier jo at det er syntaksfeil i spørringen, og da må du først vite nøyaktig hvordan den ser ut.

 

Det jeg sa om array_key_exists og mysql_real_escape_string gjelder forresten også for $_POST-arrayet, som du her anvender for å ta imot data fra brukeren. :)

Lenke til kommentar
Gjorde du som jeg sa sist, og skrev ut sql-spørringen slik at du kunne kontrollere at den ble riktig? Feilmeldingen sier jo at det er syntaksfeil i spørringen, og da må du først vite nøyaktig hvordan den ser ut.

 

Det jeg sa om array_key_exists og mysql_real_escape_string gjelder forresten også for $_POST-arrayet, som du her anvender for å ta imot data fra brukeren. :)

 

Er ikke helt med på hva du mener!?

Lenke til kommentar
Gjorde du som jeg sa sist, og skrev ut sql-spørringen slik at du kunne kontrollere at den ble riktig? Feilmeldingen sier jo at det er syntaksfeil i spørringen, og da må du først vite nøyaktig hvordan den ser ut.

 

Det jeg sa om array_key_exists og mysql_real_escape_string gjelder forresten også for $_POST-arrayet, som du her anvender for å ta imot data fra brukeren. :)

 

Er ikke helt med på hva du mener!?

Ser at du siterer hele innlegget mitt, så jeg vet ikke helt hva det er du ikke forstår.

 

I det første avsnittet ber jeg deg bare skrive ut sql-spørringen til skjerm, for eksempel med print("<p>$sql</p>\n"); (selvfølgelig etter at du har definert $sql). Dette vil gi deg mulighet til å kontrollere at den blir riktig. Når du får feilmelding fra databasen, så er det jo et tegn på at du har sendt inn en sql-spørring som ikke utfører det den skal. Post gjerne sql-spørringen her hvis du ikke selv ser noe galt med den.

 

I det andre avsnittet sier jeg bare at du bør sjekke all input fra $_POST-arrayet på samme måte som med $_GET. Les om SQL-injections hvis du ikke skjønner hvorfor. Dette har som sagt ingen betydning for feilmeldingen du får akkurat nå, men det kan spare deg for en del irritasjon på et senere tidspunkt. :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...