2015-06-02 18 views
5

Sto imparando OOP PHP con MySQL. Sto cercando di eseguire una query che dovrebbe stampare il numero di righe restituite. Il mio codice php è la seguente:Contare il numero di righe restituite in 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; 
    } 
} 

nel mio database che la posta elettronica è in 4 file, quindi dovrebbe stampare 4, ma mostra 0

Cosa c'è di sbagliato con il mio codice?

risposta

3

Devi store result

$r->store_result(); 

e che anche, prima voi verificare la presenza di conteggio delle righe. Vedere questa nota sulla pagina di manuale

Be raccomandi prego, per le persone che a volte mancano di leggere questa importante voce di manuale per questa funzione:

Se non si utilizza mysqli_stmt_store_result(), e dispensati chiama questa funzione dopo aver eseguito un'istruzione preparata, questa funzione di solito restituisce 0 in quanto non ha modo di sapere quante righe ci sono nel set di risultati poiché il set di risultati non è ancora salvato in memoria.

Tip

Dal momento che si sta imparando OOP di PHP con MySQL, è importante notare che la connessione si è creato a MySQL era nella sintassi stile procedurale. Mentre in PHP puoi farla franca, ma in molte altre lingue non lo farai. Perché non convertirlo ora in sintassi OOP?

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

Oh, non lo sapevo. – partho

0

è necessario memorizzare il risultato usando store_result(). Per saperne di più here:

Così il vostro codice dovrebbe essere qualcosa di simile:

<?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; 
    } 
} 
?> 
Problemi correlati