Avatar billede kthiesen Novice
18. oktober 2010 - 07:20 Der er 4 kommentarer og
1 løsning

PHP MYSQL hvad er der galt med denne kode?

Hej

Jeg er ved at lave en formular, hvor data hentes fra en MySQL database ud fra bruger input.

Her er koden:

/* Henter data fra databasen om crew ud fra bruger input*/
    $crew_soefartsbog    = "";
    $crew_soefartsbog    = explode(" ", $_POST[crewmember]);
    $crew_soefartsbog    = mysql_real_escape_string("SMB ".$crew_soefartsbog[8]);

    $result = mysql_query('SELECT crew_fornavn, crew_efternavn FROM crew WHERE crew_soefartsbog = "$crew_soefartsbog"') or die(mysql_error());

    while ($row = mysql_fetch_array($result))
        {
        $captain = " $row[0] $row[1]";
        }

Jeg ved, at min variabel $crew_soefartsbog indeholder de korrekte data. Når jeg indsætter data manuelt i min sql query:

    $result = mysql_query('SELECT crew_fornavn, crew_efternavn FROM crew WHERE crew_soefartsbog = "SMB 123456"') or die(mysql_error());

så virker det som det skal.

Det virker som om strengen ikke bliver registreret - jeg er simpelthen kørt fast...Hjælp!
18. oktober 2010 - 07:54 #1
Du undlader at forklare hvad problemet er.  Skal vi gaette paa at $captain er tom naar du koerer din foerste query  men at $captain indeholder den forventede vaerdi naar du koerer queryen hvor du erstatter $crew_soefartsbog med "SMB 123456" og at du ikke faar nogen fejlmelding fra mysql_error?

I saa fald lyder det som om $crew_soefartsbog trods alt ikke indeholder den rigtige streng.  Har du provet at udskrive strengen foer du koerer queryen? for eksempel:

....
$crew_soefartsbog    = mysql_real_escape_string("SMB ".$crew_soefartsbog[8]);
echo "crew_soefartsbog = $crew_soefartsbog <br/>";

Hvis det viser sig at variabelen ikke indeholder den rigtige string, saa kommer naturligvis problemet med hvordan du faar den til det, men saa har du snaevret problemet ind.
Avatar billede kthiesen Novice
18. oktober 2010 - 09:06 #2
Hej Christian

Sorry - var lidt træt her til morgen.

Du har naturligvis helt ret, query er tom når den kører med variabel.

Jeg har lavet en echo inden query kørsel, og det er korrekt indhold når printet kommer. Ville ikke forstyrre koden med min testkode....

Burde min linje med mysql_real_escape_string() ikke rense op i strengen?

// Kristen
18. oktober 2010 - 09:42 #3
Saa du konstaterer, forstaar jeg, at din query er korrekt, men din kode $crew_soefartsbog    = mysql_real_escape_string("SMB ".$crew_soefartsbog[8]); ikke resulterer i den string du skal bruge.  Saa du loeste dit foerste problem.

Nu har du det naeste problem:  Hvordan faar du $crew_soefartsbog efter koden "$crew_soefartsbog    = explode(" ", $_POST[crewmember]);" renset op saa ender med den oenskede kode.  Men der kan jeg ikke hjaelpe, jeg kender ikke saa meget til real_escape og lignende.  Jeg foreslaar at du starter et nyt spoergsmaal om dette problem, maaske naevne "mysql_real_escape_string i titlen for at tiltraekke den rette ekspertise, og forklare at du vil rense stringen ud men ender med en tom string.

Jeg tillader mig at oprette dette som et svar fordi jeg mener at have hjulpet og saa du kan lukke spoergsmaalet.
Avatar billede kthiesen Novice
18. oktober 2010 - 11:57 #4
Hej Christian

Der er jeg så ikke enig.

Der er ikke i dine indlæg angivet noget nyt, hvis man læser mit oprindelige indlæg.
"Jeg ved, at min variabel $crew_soefartsbog indeholder de korrekte data." Her er det implicit at jeg har testet indholdet med en print kommando.

Jeg har stadig ikke en løsning på mit problem, så spørgsmålet er stadigt åbent.
18. oktober 2010 - 13:47 #5
Ok, det er op til dig.  Men nu da du har oprettet et nyt spoergsmaal (med det samme indhold, http://www.eksperten.dk/spm/921563 ) maa du lukke DETTE spoergsmaal.  Fremgangsmaaden maa saa vaere at du selv opretter et svar og accepterer det.
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
Kurser inden for grundlæggende programmering

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