godoprod Skrevet 28. april 2009 Del Skrevet 28. april 2009 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
alfred97 Skrevet 29. april 2009 Del Skrevet 29. april 2009 (endret) 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 29. april 2009 av alfred97 Lenke til kommentar
TheClown Skrevet 29. april 2009 Del Skrevet 29. april 2009 DU burde skrive SELECT og WHERE osv. med store bokstaver Lenke til kommentar
kaffenils Skrevet 29. april 2009 Del Skrevet 29. april 2009 DU burde skrive SELECT og WHERE osv. med store bokstaverOT: Hvorfor det? Lenke til kommentar
siDDis Skrevet 29. april 2009 Del Skrevet 29. april 2009 Eg synes det er lettare å lesa når ein skriver med store bokstaver, men ein må ikkje. Lenke til kommentar
godoprod Skrevet 29. april 2009 Forfatter Del Skrevet 29. april 2009 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
alfred97 Skrevet 30. april 2009 Del Skrevet 30. april 2009 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
godoprod Skrevet 30. april 2009 Forfatter Del Skrevet 30. april 2009 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
alfred97 Skrevet 4. mai 2009 Del Skrevet 4. mai 2009 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå