mysqli_acted_rows () ожидает, что параметр 1 будет mysqli, объект задан - PullRequest
3 голосов
/ 27 февраля 2012

Я работаю над проверкой формы на стороне сервера. Используя AJAX, форма отправляет значение в поле ввода для 'username' на мою php-страницу, которая затем проверяет, существует ли это имя пользователя в базе данных.

Вот мой php код:

$result = mysqli_query($dblink, "SELECT * FROM users WHERE `username` = '$regname'") 
or die(mysqli_error($dblink));
echo mysqli_affected_rows($result);

* (В настоящее время я делаю простое эхо для mysqli_affered_rows просто чтобы посмотреть, работает ли мой запрос MySQL как задумано) *

Я получаю ошибку:

Предупреждение: mysqli_affered_rows () ожидает, что параметр 1 будет mysqli, объект указан в /Users/test/Sites/proj/formvalidate.php в строке 20

Я не совсем уверен, что эта ошибка пытается сказать мне. Из того, что у меня есть Googled, «объект» является ссылкой на методы программирования ООП, но (насколько я знаю) я не использую концепции / принципы ООП в этом конкретном примере? Или я неверно истолковал это сообщение об ошибке?

Спасибо.

Ответы [ 4 ]

7 голосов
/ 27 февраля 2012

Вместо передачи $result в mysqli_affected_rows вы действительно хотите передать ссылку на БД (возвращаемую mysqli_connect), которая даст вам количество строк, затронутых предыдущим запросом. См:

http://uk.php.net/mysqli_affected_rows

1 голос
/ 27 февраля 2012
echo mysqli_affected_rows($dblink);

Объект mysqli содержит количество затронутых строк, а не набор результатов. Я рекомендую вам использовать mysqli со стилем OO или попробовать PDO.

0 голосов
/ 15 апреля 2017
echo mysqli_num_rows($result);

Это должно работать.

0 голосов
/ 27 февраля 2012

Вы должны указать только $mysqli_link (в вашем случае $dblink), а не $result в написанном вами коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...