Salve a tutti.
Per controllare se un record esiste uso una routine in MySQLI che funziona perfettamente,
per ragioni di sicurezza, e per abituarmi a scrivere codice migliore, sto cercando di sostituire
questa routine con una che utilizza i 'prepared statement'.
Questa č la routine :
<PHP>
<?php
$mysqli = new mysqli("localhost", "root", "", "sacradomus");
$email = "roma@libero.it";
$query = "SELECT anaEmai FROM Anagrafe WHERE anaEmai =?";
$statement = $mysqli->prepare($query);
$statement->bind_param('s', $email);
$statement->execute();
$rowcount= ($statement);
printf("Il recordset ha %d righe .\n",$rowcount);
$statement->bind_result($ema);
$rowcount=mysqli_num_rows($statement);
printf("Il recordset ha %d righe .\n",$rowcount);
print '<table border="1">';
while($statement->fetch()) {
print '<tr>';
print '<td>'.$ema.'</td>';
print '</tr>';
}
print '</table>';
$statement->close();
</PHP>
Quando eseguo ricevo due warnings :
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, object given in C:\EASYPHP\eds-www\prova.php on line 10
Il recordset ha 0 righe .
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, object given in C:\EASYPHP\eds-www\prova.php on line 13
Il recordset ha 0 righe .
Lo strano e' che mi dice che il 'recordset' ha 0 righe e poi stampa correttamente il campo della
email tornata dalla select.
Se arriva alla stampa dovrebbe essere, almeno come sintassi, corretta, trova il record, lo aggiunge al 'recordset' lo stampa ma torna zero a num_rows().
E' vero ho due warnings ma cercando su internet ho trovato una proposta di soluzione che
trasforma i warnings in error e quindi...
.ps ho messo i tags per il codice ma pare non funzionino.