2015-04-28 2 views
0

У меня есть этот кодmysqli_stmt_affected_rows не работает для обновлений, подготовленного заявления

$SQL = "UPDATE cart SET a = ? WHERE b = ? AND c = ?"; 

      if($stmt2 = mysqli_prepare($conn, $SQL)){ 
         mysqli_stmt_bind_param($stmt2, "iii", $a1, $b1, $c1); 
         mysqli_stmt_execute($stmt2); 

       if(mysqli_affected_rows($conn)){ 
        echo "updated"; 
        mysqli_stmt_close($stmt2); 
       } 
       else 
        echo "nope"; 
      } 

Я выясняя, почему выше код не работает. Я отлаживаю все, что знаю.

И наконец, я удаляю условие if. Так или иначе, он работает. Пытался найти в Интернете, чтобы выяснить, в чем причина, но не нашел. Может кто-нибудь, пожалуйста, объясните мне, почему это так происходит? Я новичок в mysqli. Очень нужна помощь :) спасибо!

+0

Добавить сообщение об ошибках в начало вашего файла (ов) сразу после открытия '

+0

Измените 'echo 'nope" 'на' echo mysqli_error ($ conn) ', поэтому вы видите причину сбоя' if'. – Barmar

+0

Измените ... весь код на использование объектов. – Devon

ответ

1

Вы должны использовать

mysqli_stmt_affected_rows($stmt2); 

mysqli_stmt :: $ affected_rows - mysqli_stmt_affected_rows - Возвращает общее количество строк изменен, удален или вставлен последним выполненным оператором

Вместо

mysqli_affected_rows($conn); 

, который предназначен для выполнения обычных запросов.

Manual

Редактировать

Я просто заметил, что ваш вопрос название упоминается имя функции право, и ваш код использует неправильно один.

Смежные вопросы