Intereting Posts
PHP-Простой класс ведения журнала запросов не возвращает размер массива PHP: переписывание URL-адресов Массив, возвращающий значение null, многие для многих. Laravel Проверить код для таблицы обновления запроса Как конвертировать IPv6 из двоичного файла для хранения в MySQL Amazon api не удаляет мои продукты из инвентаря PHP: Правильное регулярное выражение для того, чтобы каждая буква слева от первого нижнего регистра двоеточия Обрабатывать каталоги XML по php Как реализовать функцию: отправить сообщение на форум по электронной почте? Регулярные выражения: как совместить числа? Как показать цену продажи или обычную цену woocommerce, если нет цены продажи Как вычесть значения двух разных столбцов из двух разных таблиц? Как вы создаете cakephp на общем хостинге? сравнивая массивы в php, не заботясь о порядке «Замечание PHP: неопределенное свойство»

mysqli_affected_rows () возвращает -1, но работает запрос

Кажется, что все мои функции mysql имеют эту проблему. Простой оператор insert работает, но когда я проверяю затронутые строки, он возвращает -1 .

Это работает, новая строка вставляется в базу данных с ним, но отладчик показывает mysqli_affected_rows как -1 , и поэтому блок else запускается:

 $query = "INSERT INTO users (email, password) VALUES ('$email', '$password')"; mysqli_query($this->connection, $query) or die('Query failed in register.'); if (mysqli_affected_rows($this->connection)>0) { //this doesnt get run, } else { // this is run } 

Почему это произойдет?

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

  • Я использую Netbeans, Xdebug, WAMP.
  • Когда я просматриваю соединение сразу после его создания, затронутые строки уже установлены на -1.
  • После выполнения успешного запроса соединение все еще показывает -1, прежде чем выполнять проверку затронутых строк.
  • Сообщения об ошибках или номера ошибок не видны в объекте соединения.

У меня была точно такая же проблема. Я исследовал проблему с Netbeans и Xdebug, и кажется, что это ошибка в самом расширении MySQLi. Был составлен отчет об ошибке . Тем временем вы можете вместо этого использовать более прощающее выражение, например

 if (mysqli_sqlstate($dbc) == 00000) { //your code } 

для продолжения отладки вашего оставшегося кода.