2015-06-02 13 views
5

Uczę się OOP PHP z MySQL. Próbuję uruchomić kwerendę, która powinna wydrukować liczbę zwracanych wierszy. Mój kod php jest jak poniżej:Policz ilość zwróconych wierszy w OOP PHP

$con= mysqli_connect('localhost','root','','dealinte_cms') or die(mysqli_error()); 
$email="[email protected]"; 
if($r=$con->prepare("SELECT * FROM user WHERE email=? ")){ 
$r->bind_param("s",$email); 
    if(!$r->execute()){ 
     echo mysqli_errno($con); 
    } 
    else{ 
     $rowCount=$r->num_rows; 
     echo $rowCount; 
    } 
} 

W mojej bazy danych, że e-mail jest w 4 rzędach, więc należy go wydrukować 4, ale pokazuje 0

Co złego z mojego kodu?

Odpowiedz

3

Musisz store result

$r->store_result(); 

a także przed Państwo sprawdzić liczba wierszy. Zobacz tę notatkę na stronę podręcznika

Informujemy, dla ludzi, którzy czasami brakuje czytać ten ważny Ręczne wprowadzanie do tej funkcji:

Jeśli nie używać mysqli_stmt_store_result(), a immediatley wywołać tę funkcję po wykonaniu przygotowanej instrukcji, funkcja ta zwykle zwraca 0, ponieważ nie ma możliwości sprawdzenia, ile wierszy znajduje się w zestawie wyników, ponieważ zestaw wyników nie jest jeszcze zapisany w pamięci.

Tip

Ponieważ uczysz się OOP w PHP z MySQL, ważne jest, aby pamiętać, że stworzony połączenie mysql był w składni stylu proceduralnym. Podczas gdy w PHP możesz uciec, ale w wielu innych językach tego nie zrobisz. Dlaczego nie przekonwertować go teraz na składnię OOP?

$con= new mysqli('localhost', 'my_user', 'my_password', 'my_db'); 
+0

Och, nie wiedziałem o tym. – partho

0

Należy zapisać wynik za pomocą store_result(). Czytaj więcej here:

więc kod powinien być coś takiego:

<?php 
$con= mysqli_connect('localhost','root','','dealinte_cms') or die(mysqli_error()); 
$email="[email protected]"; 
if($r=$con->prepare("SELECT * FROM user WHERE email=? ")){ 
$r->bind_param("s",$email); 
    if(!$r->execute()){ 
     echo mysqli_errno($con); 
    } 
    else{ 
     $r->store_result(); 
     $rowCount=$r->num_rows; 
     echo $rowCount; 
    } 
} 
?> 
Powiązane problemy