Diskuze: Chyba vo WHERE

Ostatní jazyky SQL SQL a databáze Chyba vo WHERE

Aktivity (1)
Avatar
Marek Burda
Člen
Avatar
Marek Burda:17.9.2015 20:41

zdravím neviete prečo pri logine nedokáže spracovať where v selecte ? Po veľa testcoh sme prišli nato že chby musí byť vo where. $meno a $heslo máme identifikované... všetko sa zobratzuje správne Ďakujem za pomoc

$sql_dotaz = "SELECT * FROM tz_members WHERE meno = '".$meno."' AND heslo = '".md5($heslo)."';";
 
Odpovědět  +1 17.9.2015 20:41
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Marek Burda
IT Man:17.9.2015 20:49

Není chyba v názvech sloupců? Hodil by se výpis chyby. :)
Btw. je velmi nebezpečné vkládat proměnné přímo do dotazu. Lepší by bylo používat PDO (třeba i wrapper ze zdejších manuálů). K bezpečnosti: http://www.itnetwork.cz/…ion-a-obrana

Nahoru Odpovědět  +2 17.9.2015 20:49
Usmívej se, zítra už tvůj kód nemusí fungovat!
Avatar
Odpovídá na Marek Burda
Michal Štěpánek:17.9.2015 23:12

A k čemu tam jsou ty dva středníky?

...md5($heslo)."';";
Nahoru Odpovědět 17.9.2015 23:12
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Michal Štěpánek
IT Man:18.9.2015 6:26

Zda to chápu správně, jeden patří k MySQL dotazu a druhý k PHP kódu. Ten pro MySQL je ale zbytečný. :?

Nahoru Odpovědět 18.9.2015 6:26
Usmívej se, zítra už tvůj kód nemusí fungovat!
Avatar
Odpovídá na Marek Burda
Michal Štěpánek:18.9.2015 9:38

Hodí to nějakou chybu, nebo se jen nevypíše nic?

Nahoru Odpovědět 18.9.2015 9:38
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na Marek Burda
Honza Bittner:18.9.2015 10:15

Zkoušel jsi nahradit PHP za normální text, tedy to zadat napevno?

Nahoru Odpovědět 18.9.2015 10:15
Student FIT ČVUT. Followuj mě na https://twitter.com/tenhobi a ptej se na https://github.com/HoBi/ama.
Avatar
Yahkem
Redaktor
Avatar
Yahkem:18.9.2015 10:35

Nevím, co používáš za typ databáze (předpokládám MySQL), ale zkus

WHERE meno = '".$meno."' AND heslo = '".md5($heslo)."'

nahradit za

WHERE meno LIKE '".$meno."' AND heslo LIKE '".md5($heslo)."'

Může i záležet na tom, jestli hesla v db ukládáte jako char, nebo binary - v tom případě by se mělo porovnávat heslo rovnítkem.

A BTW, není to náhodou parádní SQL injekce? :)

Editováno 18.9.2015 10:38
 
Nahoru Odpovědět 18.9.2015 10:35
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.