Datorn iFokus

Datorn

Etikettövrigt
Läst 2563 ggr
Stephanie
2009-12-10 11:57
0

MySQL-problem...

Jag får ett felmeddelande som vi inte lyckas klura ut vad det beror på…

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 7

Det är inget fel i koden så vitt jag kan se. Men när MySQL inte ville fungera för mig förut, installerade min lärare en äldre version av programmet istället. Kan det vara att min version av PHP inte fungerar med den versionen av MySQL?

Vad gör jag? Rynkar på näsan

PokalStjärnor Mvh Stephanie StjärnorPokal

johan
2009-12-10 14:10
0
#1

Hur ser SQL-frågan ut?

Låter som helt fel väg att få att installera en äldre version. Ska man aldrig kunna uppgradera för bättre säkerhet, prestanda och funktioner?

Mvh // Johan

Stephanie
2009-12-10 14:22
0
#2

#1 Vad menar du med SQL-frågan?

Jag tycker också att det låter som en dålig idé att installera äldre versioner… Men min lärare vill att jag ska installera en äldre version av Apache också, för att få det att funka.. Det hade väl varit bättre att försöka ta reda på vad problemet är… Obestämd

PokalStjärnor Mvh Stephanie StjärnorPokal

johan
2009-12-10 15:45
0
#3

Låter som en lat lärare.

Du försöker väl köra en SQL-fråga i din kod och som inte fungerar för dig.

Vad använder du för fråga för att hämta eller skriva data från/till databasen? Typ "select * from tabellen"

Mvh // Johan

Stephanie
2009-12-10 19:02
0
#4

Ingen aning… Det är ett formulär vi ska göra. Kopierar in koderna istället…

PokalStjärnor Mvh Stephanie StjärnorPokal

Stephanie
2009-12-10 19:03
0
#5
Kan inte kontakta ' . 'databasen just nu.

' ); } // Om inte den efterfrågade databasen finns if (! mysql\_select\_db('uppgift3') ) { die( '

Kan inte hitta ' . 'databasen.

' ); } // Sedan begära vilka variabler som ska skickas. "id" läggs till automatiskt. $fornamn = $\_REQUEST\['fornamn'\]; $efternamn = $\_REQUEST\['efternamn'\]; $alder = $\_REQUEST\['alder'\]; $kon = $\_REQUEST\['kon'\]; $epost = $\_REQUEST\['epost'\]; //Därefter stoppa in i databasens tabell $sql = "INSERT INTO namnlista SET fornamn='$fornamn', efternamn='$efternamn', alder='alder', kon='kon', epost='epost',"; //Och till sist bekräfta om det gick bra att lägga in informationen if (mysql\_query($sql)) { echo('

'); echo('

Tack för din anmälan!

'); echo('

Vid frågor eller eventuella problem med formuläret kontakta adminstratören

'); } else { echo('

Det gick tvärr inte att lägga till din anmälan. Vid frågor eller eventuella problem med formuläret kontakta administratören' . mysql\_error() . '

'); } ?>

PokalStjärnor Mvh Stephanie StjärnorPokal

Stephanie
2009-12-10 19:04
0
#6
Anmälan uppdaterad.

'); } else { echo('

Det gick inte att uppdatera: ' . mysql\_error() . '

'); } ?>

Tillbaka till svaren

Det gick inte att komma till databasen: ' . mysql\_error() . '

'); } $row = mysql\_fetch\_array($row); $id =$row\["id"\]; $fornamn = $row\["fornamn"\]; $efternamn = $row\["efternamn"\]; $alder = $row\["alder"\]; $kon = $row\["kon"\]; $epost = $row\["epost"\]; ?>

ID:

Föramn:

Efternamn:

Ålder:

Man: Kvinna:

E-post:




PokalStjärnor Mvh Stephanie StjärnorPokal

Stephanie
2009-12-10 19:06
0
#7

Deadline för tre uppgifter samt uppdraget är om en vecka. Jag förstår inte hur jag ska klara det, när ingenting fungerar! Rynkar på näsan

PokalStjärnor Mvh Stephanie StjärnorPokal

charlie
2009-12-10 19:14
0
#8

En sak som jag sag initiellt i din Insert… du har ett extra komma pa slutet. som ska bort.

$sql = "INSERT INTO namnlista SET

fornamn='$fornamn',
efternamn='$efternamn',
alder='alder',
kon='kon',
epost='epost'";

---

charlie
2009-12-10 19:15
0
#9

Och motsvarande sa saknar du komma i update

$sql = "UPDATE namnlista SET

id = '$id',
fornamn='$fornamn',
efternamn='$datum',
alder='$alder',
kon='$kon',
epost='$epost'

WHERE id='$id'";

---

Stephanie
2009-12-10 19:47
0
#10

Sedär! Det löste visst felet! Förvånad Tackar!

PokalStjärnor Mvh Stephanie StjärnorPokal

Stephanie
2009-12-10 22:51
0
#11

Nu klagar den på den här delen i ett annat dokument:

$sql = "UPDATE namnlista SET

id = '$id',
fornamn='$fornamn',
efternamn='$datum'
alder='$alder'
kon='$kon'
epost='$epost'

WHERE id='$id'";

Och då på den sista raden, här ovan. Får felmeddelandet: "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=''' at line 10". Har jag missat någon ' eller " där?

PokalStjärnor Mvh Stephanie StjärnorPokal

johan
2009-12-10 23:15
0
#12

Du måste ha komma efter alla fält utom den sista. För id och fornamn är det rätt, men efternamn, alder, kön är det fel.

Är det er lärare som lärt er att skriva så här? Att skriva frågorna på det sättet utan istället för att använda parametrar är väldigt dumt! Det öppnar upp för "sql injection attacks" som är ett sätt att hacka databasen hur lätt som helst.

Jag har aldrig använt php, så jag vet inte exakt hur man använder parametrar där, men det är ett måste!!! Kanske är den här länken läsvärd?

Att skriva som ni skrivit är ungefär som att skriva koden till bankomatkortet med spritpenna på kortet. Visst, det är bekvämt, men fullständigt idiotiskt.

Mvh // Johan

Stephanie
2009-12-10 23:18
0
#13

#12 Oj, förlåt! Jag glömde att jag ändrade där Skäms

Denna är rätt:

$sql = "UPDATE namnlista SET

id='$id',
fornamn='$fornamn',
efternamn='$datum',
alder='$alder',
kon='$kon',
epost='$epost',

WHERE id='$id'";

PokalStjärnor Mvh Stephanie StjärnorPokal

Stephanie
2009-12-10 23:23
0
#14

#12 Koderna är i princip kopierade rakt av från min lärarens instruktioner. Dessvärre är det här bara något som kommer ge mig ett betyg just nu, så jag gör som han säger helt enkelt Obestämd

Men jag hoppas att jag kommer hålla intresset uppe även efter kurserna, så att jag fortsätter med programmering och lär mig mer efteråt!

PokalStjärnor Mvh Stephanie StjärnorPokal

johan
2009-12-11 09:11
0
#15

#13: Du kan inte ha komma precis före WHERE.

Kommatecknet har du bara mellan alla fält som ska uppdateras.

Du har ju t o m skrivit nyckelordet i versalt, så du har gjort det ganska tydligt vad som är vad. UPDATE SET och WHERE är kommandon. Efter SET har du en lista med fält som ska uppdateras. Komma har du bara för att separera varje fält åt, men aldrig efter sista fältet.

UPDATE tabell SET fält1=värde1, fält2=värde2 WHERE nyckel=värde

Kan du inte påpeka för läraren att det finns bättre och säkrare sätt. Det visar ju på att du tagit reda på saker själv, förstått och gör lite mer än bara skriver av hans kod.

Du behöver ju inte säga att han är korkad för det. :)

Mvh // Johan

Stephanie
2009-12-11 09:47
0
#16

#15 Helt ärligt så har jag bråkat lite för mycket med läraren, för att påpeka sånt… Nu är det dessutom bara en vecka kvar av kursen och han är bara vikarie. Nästa termin, till kursen Programmering C kommer vi ha den vanliga läraren. Har ingen aning om hur han är…

PokalStjärnor Mvh Stephanie StjärnorPokal

johan
2009-12-11 10:57
0
#17

Ok. :)

Tänk att det fortfarande är så att eleverna kan mer när det handlar om datorer. :)

Mvh // Johan