Jeg fors�get at lave et sql kald med en variabel.
N�r jeg laver en echo p� $test f�r jeg et nummer.
Hvis jeg udskrifter variablen med dette nummer i mysql foresp�rgslen virker
det fint.
Men hvis jeg blot bruger variabelen (Som er et brugernr. for en person der
er logget p� siden) s� fejler scriptet.
Kan nogen hj�lpe en newbee ?
Mvh Dolomito
--------------------------------
$test = $req_user_info['username'];
function displayResults(){
global $database;
$q = "SELECT username,dato,klasse,resultat "
."FROM ".TBL_RESULTS." WHERE username = $test";
$result = $database->query($q);
/* Error occurred, return given name by default */
$num_rows = mysql_numrows($result);
if(!$result || ($num_rows < 0)){
echo "Error displaying info";
return;
}
Prᅵv med '$test' i stedet - altsᅵ med enkelte anfᅵrselstegn om
variablen.
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk
Udover at 'det ikke virker' hvilken fejl f�r du s�?
--
Dan Storm - storm at err0r dot dk / http://err0r.dk
People who claim they don't let little things bother
them have never slept in a room with a single mosquito.
Hej Begge
Jeg har pr�vet at s�tte $test mellem to plinger og f�r s� denne besked:
Database table empty
Echo @test giver 8112 , som er det brugernummer brugeren er logget ind med.
Skriver jeg 8112 i foresp�rgslen s� f�r jeg det �nskede resultat.
Er det fordi jeg sql foresp�rgslen p� en tabel som hedder "results" men
henter variablen fra tabellen "user" , s� selvom det begge steder st�r 8112
opfatter den det som forskellige og tror derfor databasen er tom for denne
user ?
De er begge sat ens op i hver sin tabel. (Varchar 30)
Mvh Dolomito
Det er mï¿œske fordi $test ikke kendes i din funktion.
Ved ikke om det er hele funktionen eller om der er mere. Den del du har
gengivet, mangler i hvert fald en tildeling til $test - eller $test som
parameter eller global variabel..
og du har formentlig ikke en rï¿œkke for 'undefined' eller '' :-Z
Nï¿œr du bruger strenge, skal der vï¿œre '' om variablen. (en streng kan
have mellemrum, og du er nï¿œdt til at fortï¿œlle SQL hvor den starter og
slutter - ogsᅵ nᅵr den er i en variabel)
>
> N�r du bruger strenge, skal der v�re '' om variablen. (en streng kan have
> mellemrum, og du er n�dt til at fort�lle SQL hvor den starter og slutter -
> ogs� n�r den er i en variabel)
>
> Birger
>
> --
> http://varmeretter.dk - billig, sund og hurtig mad
> http://bbsorensen.dk
>
>
Ok , tak for hj�lpen. Jeg m� hellere l�se mere op p� variable ;-)
Jeg h�bede det blot var en hurtigt l�sning jeg manglede.
Mvh
Dolomito
Velbekomme ^^
Hvis
> function displayResults(){
> global $database;
> $q = "SELECT username,dato,klasse,resultat "
> ."FROM ".TBL_RESULTS." WHERE username = $test";
> $result = $database->query($q);
> /* Error occurred, return given name by default */
> $num_rows = mysql_numrows($result);
> if(!$result || ($num_rows < 0)){
> echo "Error displaying info";
> return;
> }
er hvad du har i den funktion du bruger, skal du mᅵske (evt. ogsᅵ) lᅵse
lidt om scope af variable.
http://dk2.php.net/variables.scope
I ovenstï¿œende kendes $test ikke.
> Jeg fors�get at lave et sql kald med en variabel.
> Kan nogen hj�lpe en newbee ?
>
> --------------------------------
>
> $test = $req_user_info['username'];
>
> function displayResults(){
> global $database;
> $q = "SELECT username,dato,klasse,resultat "
> ."FROM ".TBL_RESULTS." WHERE username = $test";
> $result = $database->query($q);
N�r du nu er selverkl�ret newbie, s� kan du lige s� godt l�re at g�re
det rigtigt fra starten af med parameterized queries :-)
S� f�r du fjernet en stor del (al?) risikoen med at blive hacket med
sql-injects.
$database = new mysqli("localhost", "my_user", "my_password", "world");
...
$q = "SELECT username,dato,klasse,resultat "
."FROM ".TBL_RESULTS." WHERE username = ?";
if ($stmt = $database->prepare($q) {
$stmt->bind_param("s",$test);
$stmt->execute();
$stmt->bind_result($username,$dato,$klasse,$resultat);
if (!$stmt->fetch()) {
echo "Error displaying info";
return;
};
...
};
Leif
> Ok , tak for hj�lpen. Jeg m� hellere l�se mere op p� variable ;-)
>
> Jeg h�bede det blot var en hurtigt l�sning jeg manglede.
Du kan g�re $test kendt i din funktion s�dan:
function displayResults ($test) {
blablabla
og s� kalde den med:
displayResults($test);
fra en blok hvor $test er kendt
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/