| 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: 12 let
|
|||
0