Din mysql_connect in pdo

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Din mysql_connect in pdo

Zilele trecute m-am cam uitat asa pe PDO dar nu prea am inteles cum sa transform din mysql in pdo. am urmatoarea secventa de cod:

Cod: Selectaţi tot

$reclamaRV = "SELECT * FROM `anunturi` WHERE `platit` = '1' ORDER BY RAND() LIMIT 4";
$rezultatRV = mysql_query($reclamaRV);

if (mysql_num_rows($rezultatRV) < 2)
{ 
// afiseaza ceva
}

else 
while($randRV = mysql_fetch_array($rezultatRV))
{
// afiseaza altceva
}
Iar in pdo am incercat asa:

Cod: Selectaţi tot

$reclamaRV = $dbh->prepare("SELECT * FROM `anunturi` WHERE `platit` = '1' ORDER BY RAND() LIMIT 4");
$rezultatRV = $reclamaRV->fetch(PDO::FETCH_ASSOC);
$rezultatRVrand = $reclamaRV->fetch(PDO::FETCH_NUM);

if ($rezultatreclamaverticalarand > 1)
{
// afiseaza ceva
}

else
while($rand = $rezultatreclamaverticala)
{
// afiseaza altceva
echo $rand['nume'];
}
Dar nu afiseaza nimic In cazul folosit la PDO, in cazul mysql afiseaza corect

MarPlo Mesaje:4343
Salut
Daca folosesti prepare() trebuie aplicat si execute() la obiectul creat cu prepare ($reclamaRV), dupa care se aplica fetch() la acelasi obiect in instructiunea while() de parcurgere a datelor (in caz de Select).
Vezi atent lectia PHP PDO - prepare si execute si explicatiile din ea; exemplele date acolo functioneaza.

cadou Mesaje:328
Sper ca am inteles, uite cum am realizat codul urmator, este ok scris ? eu cam asa am inteles din ce am citit pe acolo

Cod: Selectaţi tot

$RV = $dbh->prepare("SELECT * FROM `anunturi` WHERE `platit` = '1' LIMIT 3");
$RV->execute();

if($RV->fetch(PDO::FETCH_NUM) == 0)
{
// daca nu sunt rezultate afiseaza ceva
}

else if($RV->fetch(PDO::FETCH_NUM) == 1)
{
// daca e un rezultat afiseaza ceva 1
}

else if($RV->fetch(PDO::FETCH_NUM) == 2)
{
// daca sunt doua rezultate afiseaza ceva 2
}
 

MarPlo Mesaje:4343
Daca nu se folosesc inlocuitori in comanda SQL (? sau :nume) nu are rost sa aplici prepare() si execute() fiindca datele nu sunt filtrate in sirul SQL ci in array-ul cu valorile pt. inlocuitori; poti folosi query().
Functia fetch() nu returneaza numarul de randuri, ci un array cu coloanele din randul respectiv, si se adauga in while() pt. parcurgerea randurilor.
- Vezi si lectia: PHP PDO - Select, fetch.

- Iar daca ce mai faci e bine sau nu, eu nu stiu; tu stii dupa rezultatul obtinut.