2013-05-20 3 views
-3

Мне трудно получить строки из таблицы в базе данных, потому что mysqli_num_rows всегда возвращает false. Это выдержка из моего кода:mysqli_num_rows возвращает false вместо true

$query = "SELECT * FROM table1 WHERE user = '$user'"; 
if (mysqli_num_rows(mysqli_query($conn, $query))) 
{ 
$row = mysqli_fetch_row($results); 
echo $row[1] 
} 

я не получил результата echo $row[1]. Затем я заменил if заявление с другим:

if (!mysqli_num_rows(mysqli_query($conn, $query))) 
    echo 'no rows!' 

и не получил "ни одной строки! в браузере.

Я успешно подключился к базе данных, и другие запросы работают нормально. Пожалуйста, я хотел бы понять, почему mysqli_num_rows вернет false, хотя у меня есть строки в таблице, которые соответствуют запросу.

+0

Как выглядит функция 'queryMysql'? – Jim

+0

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). – h2ooooooo

+0

Для поиска исправления требуется всего 2 миллиона. –

ответ

1

Это должно быть

$query = "SELECT * FROM table1 WHERE user = '$user'"; 
if (mysql_num_rows(mysql_query($query)) > 0){ 
$row = mysql_fetch_row($results); 
    echo $row[1]; 
}else{ 
    echo 'user does not exist'; 
} 
+2

+1, чтобы выровнять ненужные пустые голоса –

+2

@DarylGill Итак, вы думаете, что это хорошая практика для продвижения кода, содержащего ошибки синтаксического анализа? Я не тот, кто подал заявку, но нисходящий голос был дан по очень веской причине. Кроме того, нисходящий ответ на вопрос заставляет автора потерять 2 очка, в то время как надпись на ответ заставляет автора заработать 10 очков. Так что это совсем не так. – Jocelyn

+2

@Jocelyn Вместо того, чтобы просто делать downvoting из-за отсутствия синтаксиса, люди должны сделать ошибку более очевидной. Я знал об этой проблеме и собирался посмотреть, увидит ли она phpno0b .. Если бы я не собирался редактировать решение –

1
$query = "SELECT * FROM table1 WHERE user = '$user'"; 
if (mysql_num_rows(queryMysql($query))) 
{ 
$row = mysql_fetch_row($results); 
echo $row[1] 
} 

Попробуйте сделать это шаг за шагом:

$Query = mysql_query($query); 
$Results = mysql_num_rows($Query); 

if ($Results === 0){ 
echo "No Results"; 
}else{ 
$row = mysql_fetch_row($query); 
echo $row[1]; 
} 
+0

И что же? –

0

Это то, что она должна выглядеть, если есть строки:

$query = "SELECT * FROM table1 WHERE user = '$user'"; 
if (mysql_num_rows(mysql_query($query)) != 0) { 
$row = mysql_fetch_row($results); 
echo $row[1] 
} 

Этот это то, что должно выглядеть, если строк нет:

if (mysql_num_rows(mysql_query($query)) == 0) { 
    echo 'no rows!' 
} 

Лучший способ сделать это будет выглядеть так:

$query = "SELECT * FROM table1 WHERE user = '$user'"; 
if (mysql_num_rows(mysql_query($query)) != 0) { 
$row = mysql_fetch_row($results); 
echo $row[1] 
}else{ 
if (mysql_num_rows(mysql_query($query)) == 0) { 
    echo 'no rows!' 
}} 
0

Если метод queryMysql является заказ, то вполне вероятно, что он не возвращает ресурс (т.е. он может вернуть массив). Знаком этого будет mysql_num_rows, возвращающий литерал false. Если это так, вы можете использовать count в массиве.

Если mysql_num_rows возвращает 0, а не false, то это означает, что запрос действительно не возвращает строк.

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