Gå til innhold

sprintf med mysql query?


Anbefalte innlegg

Skrevet

Hei

 

Jeg har en mysql query, som jeg skal kjøre - og bruker sprintf til å legge inn informasjon. Den ser sånn ut:

 

		$query = sprintf("INSERT INTO `users` (`email`, `firstname`, `lastname`, `password`) VALUES
									('%s', '%s', '%s', '%s')",
									$email, 
									$fname, 
									$lname, 
									$pass);
		$mysql = mysql_query($query) or die(mysql_error());

 

 

error jeg får er:

 

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 '*epost*'', '*fornavnetmitt*'', ''*etternavnetmitt*'', '*kryptertepassordetmitt*' at line 2

 

kan det være at jeg bruker %s? må jeg bruke noe annet?

Takk!

Videoannonse
Annonse
Skrevet (endret)

Fant løsningen, fjernet ' før og etter alle %s :)

 

nytt problem, ny feilmelding.

 

"Unknown column '*random tegn*' in 'field list'"

 

 

*random tegn* er jo ikke no sånn column?

Endret av Sk!ppy
Skrevet

Du kunne ikke gjøre ting litt mer kryptisk og ullent slik at det blir helt umulig å hjelpe? Først og fremst er det ikke spesielt bra å presentere feilmeldinger med *sensur*, hva om problemet hadde ligget i verdien du tilegner epost? For det andre, hva inneholder de variablene du setter inn i spørringen? ... og tilslutt, hva er *random tegn*? Har det noen likehetstegn med data inn, eller er det rett og slett helt tilfeldig?

 

Nå bare gjetter jeg her, men den siste feilmeldingen du får kan komme fordi du mangler ' rundt verdiene du tilegner de forskjellige feltene. Hvis ikke variablene inneholder ' fra før trenger du disse i selve spørringen.

Skrevet

får ' med %s, og *random tegn* er random tegn, f.eks abubeu21o3n23uo1nfo1b231o2in1mdeim1p24m123u1b241o24n124o123m - i ca den lengden jeg skrev.

Skrevet

... og dette har absolutt ingen sammenheng med dataene du setter inn i spørringen? Har du sett på hvordan spørringen faktisk blir seendes ut og hva variablene du benytter i den faktisk inneholder? Det som slår meg er at det kan være en passord-hash av et eller annet slag som mangler ' slik at MySQL tror det er et kolonnenavn og ikke data.

Skrevet

Jeg har prøvd å bare printe ut query, uten å kjøre den, så da at jeg fikk ikke med hele passord hashen, kanskje skjermen ikke var bred nok, og jeg ikke fikk scrolla helt til høyre, og når jeg la på en ' funka det heller ikke, så jeg skjønner ikke helt hva som er galt.

Skrevet

$query = sprintf("INSERT INTO `users` (`email`, `firstname`, `lastname`, `password`) 
                 VALUES ('%s',
                         '%s',
                         '%s',
                         '%s')",$email,$fname, $lname, $pass);

echo nl2br($query);

Kjør denne for å sjekke hvordan sql'en ser ut. Så kan du evt kopiere og lime den inn i phpmyadmin (eller tilsvarende) og kjøre sql'em direkte der. Så kan du manuelt endre på den til den fungerer, for så å gjøre nødvendig endringer i php koden.

Skrevet

Det funka nå, men det jeg syns var litt rart, var at jeg måtte ha ' rundt %s , som var passordet, men ikke alle de andre ? Rart.

Skrevet

Vet ikke hvorfor, men den returnerer med error med at det er dobbelt opp med ' om jeg tar det rundt, men må gjøre det på passordet. jeg er fullt klar over det, det er derfor jeg synes det er rart.

Skrevet

Kommer fra post, men kanskje jeg vet det, bruker quote_smart(), den bruker vel magic_quotes? fordi passordet ble jo ikke kjørt gjennom quote_smart - bare kryptert med engang

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