Om du vill använda mysqli_stmt::$num_rows (det vill säga kontrollera antalet rader på det förberedda uttalandet), du måste använda $stmt->store_result() efter att ha kört den förberedda satsen innan man kan kontrollera antalet rader. Det betyder att resultatet lagras i minnet innan vi kontrollerar hur många rader som returnerades.
$stmt = $conn->prepare($sql);
$stmt->bind_param('ss',$log_username,$log_username);
$stmt->execute();
$stmt->store_result(); // Need to store the result into memory first
if ($stmt->num_rows) {
// ...
Men om du vill använda mysqli_result::$num_rows (på MySQLi-resultatet konverterar du från satsresultatet), måste du göra det efter att ha gjort $result = $stmt->get_result(); , och använd $result->num_rows; , som visas nedan.
$stmt = $conn->prepare($sql);
$stmt->bind_param('ss',$log_username,$log_username);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows) {
while ($row = $result->fetch_assoc()) {
// ....
I slutändan bör de båda sluta göra samma sak - ange ett antal av raderna som returneras av den ursprungliga förberedda frågan.
Obs
Det är viktigt att notera att du inte kan använda store_result() och get_result() på samma uttalande. Vilket betyder att i det första exemplet kan du inte konvertera till ett mysqli-result-objekt (genom att använda get_result() , som låter dig använda standarden fetch_assoc() metod). Som store_result() lagrar resultatet i minnet, det finns inget för get_result() att konvertera och vice versa.
Detta betyder att om du använder store_result() , måste du hämta genom statement-fetch, mysqli_stmt::fetch() och binda resultaten genom mysqli_stmt::bind_result() . Om du använder get_result() , bör du kontrollera antalet rader på det resulterande MySQLi-result-objektet (som visas i det andra exemplet).
Du bör därför konstruera din kod så att du bara behöver använda en av dem.
Som sagt, med affected_rows som föreslås i kommentarerna, är inte rätt verktyg för jobbet - enligt manualen på mysqli_stmt::$affected_rows (samma sak gäller för en vanlig fråga, mysqli::$affected_rows ):
- PHP.net på
mysqli_stmt::store_result() - PHP.net på
mysqli_stmt::get_result() - PHP.net på
mysqli_stmt::$num_rows