ugrás a tartalomhoz

"0" kezdetu stringet nem kezel a select rendesen

Anonymous · 2004. Aug. 13. (P), 11.33
Sziasztok,

olyan gondom van, hogy egy php scriptbol szeretnek lefuttatni egy mysql lekerdezest.

a kodreszlet:
"
$keres = "SELECT ksk, vpe, lenker,ipunkt, modul, seria, leir FROM modul WHERE ksk='$_GET[ksk]' order by modul";
$eredmeny = mysql_query($keres) or die("Hiba a kérésben");

"
ez le is fut rendesen amennyiben a "ksk" erteke nem 0 -val kezdodoik. A ksk varchar(7) tipusu mezo. A kerdesem az lenne, hogy miert ad vissza mysql_num_row() 0 erteket akkor ha ez a ksk='0xxxxxx'.

Ha beirom konzolon a lekerdezest, minden tovabbi nelkul mukodik. Megnezetm az atadott ertek jo. Kiiratva rendesen latszik, csak a lekerdezes vmiert 0 row -ot ad vissza.

Remelem ertheto voltam...

Elore is koszi.

Kisjaj
 
1

Ellenőrzés nélküli változóbehelyettesítés?

js · 2004. Aug. 13. (P), 13.08
Hi,

Szerintem ezt nem szabad. Előszöris a _GET változókat ellenőrizni kell, akár mysql_(real_)escape_string() függvénnyel. Egyébként is, irasd ki a die()-al a kérést is, szerintem az lehet a hiba, hogy alapból számnak értelmezi a _GET-et, és levágja a nullákat az elejéről. Vagy valami más konverzió van, és nem az lesz a kérés, amit szeretnél.
---jul
4

trigger_error

Hodicska Gergely · 2004. Aug. 17. (K), 14.23
Egyébként is, irasd ki a die()-al a kérést is

Le kene mar szokni a die hasznalatarol. Hasznaljuk helyette a trigger_error fuggvenyt. Igy ha sajat hibakezelot hasznalunk, vagy fogunk a kesobbeik soran, akkor egysegesen tudjuk kezelni ezeket a hibakat.
Jo lenne szerintem, ha a manualban is inkabb ez szerepelne a peldakban.

Felho
2

esetleg...

bbalint · 2004. Aug. 13. (P), 18.05
mivel nulla kezdetű a beírt szöveg, és ilyen macskakörmök között van a változó (mikor is a PHP behelyettesíti, ugye, szépen) lehet úgy gondolja a feldolgozó, hogy "azt ott én most pediglen egészként kezelem", mert. mert miért ne, talán van valami ilyesmi viselkedés.
[sö, az átalakítás során a kezdő nullát sikerül átalakítani egy nullás számmá, aztán a többivel meg már nem is próbálkodik]

amúgy is, ajánlott aposztrófos karaktersorozatok meg a pont (.) összefűző operátor használata; mely karakterláncokat fűz össze, vagyis mindkét operandust a bal- és jobboldalon is stringként kezeli.

$keres = 'SELECT ksk, vpe, lenker,ipunkt, modul, seria, leir FROM modul WHERE ksk=\''.$_GET['ksk'].'\' ORDER BY modul';

ami viszont biztos fényt derít a hibára az az, hogy megnézed mi a MySQL lekérdezés tart alma (print($keres);) illetve hibaüzenetet is érdemes az el olvasni (print(mysql_error());)

bbalint
3

Sziasztok, nos a "mys

Anonymous · 2004. Aug. 16. (H), 16.02
Sziasztok,


nos a "mysql_escape_string()" megoldotta a gondot, most minden jol mukodik.

Koszonom a tanacsokat.


Üdv:
Kisjaj