Variabla v SQL stavku

Zdravo,

Imam sledeč sql stavek:
$sql = "SELECT reference,dopnumber FROM dopdocuments where reference=$referenca" ;
$res = mysqlquery($sql);
$fetched = mysql
fetcharray($res,MYSQLNUM))

in dobim naslednjo napako:
Warning: mysqlfetcharray(): supplied argument is not a valid MySQL result resource in /home/fibransi/public_html/frontend/dop.php on line 68

Po moje narobe vklopim variablo $referenca v sql stavek. Kako pa bi bilo pravilno?
Hvala

Tomaž

5 odgovorov

Probaj echojat tole da vidis kaj sploh dobis, in ce $referenca obstaja in ali je pravilni column 'reference'.

echo "SELECT reference,dopnumber FROM dopdocuments where reference=$referenca" ;

Drugace pa priporocam da das nekaj v smislu:
"SELECT reference,dopnumber FROM dopdocuments where reference='".escape($referenca).'";

in se escape funkcija, da ti nebodo injectali:
function escape($string) {
if (getmagicquotesgpc())
$string = stripslashes($string);
return mysql
realescapestring($string);
}

1

Super, hvala!
Tole pa poskusim!
lp

verjetno je $referenca prazna ali pa ima kakšne presledke in podobno

pred queryem naredi par preveerjanj.. predvsem

$referenca = str_replace("'", "''", $referenca);

potem pa v queryu popravi

$sql = "SELECT reference,dop_number FROM dop_documents where reference='".$referenca."'" ;

Preveri kaj imaš v referenci... V tvojem stavku se mora referenca popolnoma ujemat...
oz mora bit popolnoma identična oni v bazi...

vardump($referenca) ali
error
log("Kaj je v referenci".print_r($referenca, 1)); in omogočiš loge.

Probaj se izogibati navadni uporabi mysql_query če je mogoče in uporabi PDO
http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

ni potrebno komplicirat. ne rabiš delat z PDO, ne bo neke bistvene razlike.

1