php-val db query

sziasztok ezzel mi lehet a baj? valamiért nem müködik a lekérdezés ha a változó van ott viszont ha explicit beleírom akkor megy, vmi ötlet?

http://pastebin.com/YBPirhZi

köszi

Hozzászólások

Nyilván olyan mező hogy 'nev' nincs, helyette van nev.
Tehát "where $field" a helyes.
Valszeg az zavart meg hogy a "like '$find'" a helyes mert ez egy érték és igaz hogy "like $find" szám esetén működne de egyéb esetben nem.

1-es leülhet! :)
'SELECT value FROM v$nls_parameters WHERE parameter='NLS_CHARACTERSET''
PHP Parse error: syntax error, unexpected T_STRING
'SELECT value FROM v$nls_parameters WHERE parameter="NLS_CHARACTERSET"'
NLS_CHARACTERSET = ""
'SELECT value FROM v$nls_parameters WHERE parameter=NLS_CHARACTERSET'
NLS_CHARACTERSET = ""

Érdemesebb a mysqli-t használni (pl. a mysqli_connect-nek rögtön lehet adatbázist is mondani), mert egy fokkal okosabb és a mysql_real_escape_string függvényt se spórold le a lekérdezésből. Ha php5.3 akkor pedig a mysql-nd nevű új class-t.

Ha már egy $mezonev = $_POST['mezonev'] értékadást beteszel, akkor alaszinten ellenőrizni is kellene azt a szerencsétlen POST változót (különös tekintettel példul a % jelre, hogy az ne legyen) és hogy legyen valami minimális és maximális hossza. Kliensről jövő értékben sose bízz!

A felhasználó (és a szerver) életét érdemes azzal megkönnyíteni hogy a kirívóan hibás form (pl. nincs semmi kiválasztva, üres mező) esetén javascripttel adsz vissza valami használható hibát. Ez semmiképp sem helyettesíti a szerver oldali ellenőrzést!

További tipp, hogy valamennyire kezeld a hibákat. A mutatott kódnál a $result-ra egy ilyesmi elég hasznos lehet:


if($result == true) {
   if(mysql_num_rows($result) > 0 {
      while...;
   }
   else {
      print "A keresési feltételnek nincs megfelelő rekord!";
   }
}
else {
   print 'Hiba történt a lekérdezés végrehajtásakor!';
}