Почему mysqli_num_rows всегда возвращает 0?

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

Следовательно, у меня есть этот код. Тем не менее, он всегда говорит, что данных не существует, в которых он находит условие ложным.

Что не так с моим кодом ниже?

$input_word = trim($_POST["word"]);
$data_check = "SELECT * FROM word_collections WHERE single_word = '$input_word'";
$a = mysqli_query($data_check);
if (mysqli_num_rows($a) == 1)
{
echo "Data exist.";
}
else
{
echo "Data DOES NOT exist";
}

1

Решение

Ваш запрос не удался, потому что вы не передали соединение БД:

$a = mysqli_query($data_check);

Переменная для соединения неизвестна, поэтому вам нужно опираться на:

$a = mysqli_query($connection, $data_check);

и вам, возможно, придется использовать >0 вместо ==1 для тебя num_rows() так как может быть более одной записи.

Ваш код также открыт для инъекции SQL; используйте подготовленное утверждение.

Используйте PHP Отчет об ошибках а также mysqli_error($connection) по запросу.

Также убедитесь, что ваше соединение на самом деле mysqli_ и не другой API.

5

Другие решения

$input_word = trim($_POST["word"]);
$data_check = "SELECT * FROM word_collections WHERE single_word = '$input_word'";
$con = mysqli_connect("host",'id','pass','dbname'); // add this connection
$a = mysqli_query($con,$data_check);
if (mysqli_num_rows($a) == 1)
{
echo "Data exist.";
}
else
{
echo "Data DOES NOT exist";
}

Вам необходимо указать соединение в параметре 1. mysqli_query. w3schools .

0

Лучший способ сделать это.

$dbhost = 'localhost';
$dbuser = 'username';
$dbuser = 'password';
$dbpass = 'dbname';
$dbConn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

$query = "SELECT * FROM word_collections WHERE single_word = '$input_word'";

$result = $dbConn->query($query);
if($result->num_rows == 1){
echo "have some records";
}else{
echo "No records";
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector