Execute Success, но num_rows возвращает 0

Проблема, которую я только что получил,

$update_stmt->execute() в порядке, а данные в базе данных уже обновляются

но, $update_resultrow = $update_stmt->num_rows; return 0?

Я попытался скопировать команду MySQL для запуска в запросе, и она также хорошо работала:

 UPDATE ACCOUNT_EMPLOYEE SET NAME = 'cccccc' WHERE ID = 1 

Код проблемы здесь:

 $update_sql = "UPDATE ACCOUNT_EMPLOYEE SET NAME = ? WHERE ID = ?"; if ($update_stmt = $conn -> prepare($update_sql)) { if ($update_stmt->bind_param("si", $newname, $acc_id ) ) { if ($update_stmt->execute()) { // must declare here to be able to get num_rows $update_stmt->store_result(); $update_resultrow = $update_stmt->num_rows; if ($update_resultrow == 0) { echo $error_forgot_noresult . '????' . $acc_id ; $update_stmt->close(); $conn->close(); exit(); } } } } 

Да, Фред -ii-, я никогда не замечал, что у него есть -> affected_rows. пожалуйста, напишите как ответ, и я отметю его здесь

По запросу OP.

Увидев, что цель здесь – проверить, действительно ли запрос действительно успешный, вам нужно использовать affected_rows .

Согласно руководству http://php.net/manual/en/mysqli.affected-rows.php

printf («Затронутые строки (UPDATE):% d \ n", $ mysqli-> affected_rows);

  • Объектно-ориентированный стиль

int $ mysqli-> affected_rows;


Примечание:

С помощью

 $update_resultrow = $update_stmt->num_rows; 

и проверка ошибок, вызвала бы ошибку, а не «return 0».

Попробуйте найти количество строк, затронутых вашим запросом, вместо того, чтобы найти количество строк, как показано ниже:

 $update_sql = "UPDATE ACCOUNT_EMPLOYEE SET NAME = ? WHERE ID = ?"; if ($update_stmt = $conn -> prepare($update_sql)) { if ($update_stmt->bind_param("si", $newname, $acc_id ) ) { if ($update_stmt->execute()) { // must declare here to be able to get num_rows $update_stmt->store_result(); $update_resultrow = $update_stmt->affected_rows; if ($update_resultrow == 0) { echo $error_forgot_noresult . '????' . $acc_id ; $update_stmt->close(); $conn->close(); exit(); } } } }