Autor | Zpráva | ||
---|---|---|---|
Sxmanek Profil |
Zdravím, zkouším něco s pomocí PDO a něco mi nejde do hlavy. Když mám kod...
$query = $connection->prepare("SELECT * FROM users WHERE username = ? OR email = ? "); $result = $query->execute(array($username, $mail)); $count = $query->rowCount(); 2. řádek uloží do $result výsledek z $query kam se dosadí místo otazníků hodnoty tak jak to, že ten 3. řádek počítá řádky z $query a ne $result, neukamenujte mě tu, pokud to bude nějaká kravina jen :) |
||
Jan Tvrdík Profil |
#2 · Zasláno: 25. 10. 2014, 00:14:37
V proměnné
$result je true nebo false podle úspěchu dotazu. Neobsahuje tedy načtené řádky. Navíc proměnná $query by se měla jmenovat spíš $statement .
|
||
Sxmanek Profil |
#3 · Zasláno: 25. 10. 2014, 00:36:32
takže po provedení execute mohu pracovat s $query jako kdyby tam byly už hodnoty?
|
||
Alphard Profil |
#4 · Zasláno: 25. 10. 2014, 15:40:22
|
||
Sxmanek Profil |
#5 · Zasláno: 25. 10. 2014, 17:46:33
Takže by stačilo, kdyby jsem použil BindParam na přiřazení a execute bych nemusel použít nebo je lepší tohle?
|
||
xROAL Profil |
Sxmanek:
„BindParam na přiřazení a execute bych nemusel“ bindParam() je len iný spôsob akým dosadiť premenné do dotazu. execute() je potrebné zavolať v oboch prípadoch.
Toto: <?php $stmt = $connection->prepare("SELECT * FROM users WHERE username = ? OR email = ? "); $stmt->bindParam(1, $username); $stmt->bindParam(2, $mail); $stmt->execute(); ?> <?php $stmt = $connection->prepare("SELECT * FROM users WHERE username = ? OR email = ? "); $stmt->execute(array($username, $mail)); ?> Rozdiel je napríklad v tom, že bindParam() odkazuje na premennú ako na referenciu. Môžem teda neskôr zmeniť hodnotu premennej a znovu vykonať execute() . Do dotazu sa dosadí zmenená hodnota aj bez volania ďalšieho bindParam() . Tiež je s bindParam() možné vynútiť dátovy typ či dĺžku vstupu.
|
||
Časová prodleva: 10 let
|
0