В качестве части системы входа мне нужно проверить, существует ли имя пользователя в базе данных, поэтому я создал запрос, который проверяет, существует ли уже введенное пользователем имя пользователя.
С mysql_result
я проверяю, больше ли id как null. Если да: существует пользователь, а если нет, пользователь не существует. Но здесь это идет не так, и wampserver дает мне эту ошибку:
Предупреждение: mysql_result () ожидает, что параметр 1 будет ресурсом, объект указан в users.php в строке 6
function user_exists($username){ global $user_db; $username = sanitize($username); $query = mysqli_query($user_db , "SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username'"); $result = mysql_result($query, 0); //line 6 if(!$result){ return false; }else{ return true; } }
и это код, который вызывает эту функцию:
if(user_exists('name') === true){ echo 'exists'; } $user_db = mysqli_connect("localhost","root","","databaseName");
Что я попробовал:
если я это сделаю: mysqli_result($result,0,"id");
Я получаю эту ошибку: Call to undefined function mysqli_result()
. получил это предложение от этого вопроса
Все ответы на такие вопросы, как моя, говорят, что вы не должны использовать mysql
и mysqli
но только один из них, но когда я использую mysli
я получаю ошибку, как я сказал один абзац выше этого.
Так может кто-нибудь сказать мне, как это исправить.
Вы немного смешиваете mysql и mysqli. В mysqli-драйвере нет функции mysqli_result (). Однако я нашел решение вашей проблемы. Из комментария в документации PHP:
Преобразуя старый проект с использованием расширения mysql в расширение mysqli, я обнаружил, что наиболее неприятным изменением является отсутствие соответствующей функции mysql_result в mysqli. В то время как mysql_result является, как правило, ужасной функцией, полезно было получить одно значение результата результата из набора результатов (например, при поиске идентификатора пользователя).
Ниже приведен пример поведения mysql_result, хотя вы можете назвать его чем-то другим, кроме mysqli_result, чтобы не думать, что это фактическая встроенная функция.
Код:
<?php function mysqli_result($res, $row, $field=0) { $res->data_seek($row); $datarow = $res->fetch_array(); return $datarow[$field]; } ?>