2016-03-10 4 views
0

У меня есть пользователи, которые добавляют строки в db. Прямо над их изображением я показываю количество строк, которые они добавили. Довольно просто и отлично работает. Проблема заключается в том, что я получаю ошибку, которая не имеет смысла:PHP num_rows работает, но показывает ошибку

mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in... 
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){ 
    $result = mysqli_query($con,"SELECT * FROM my_table WHERE user_ids = ". 
     $row['user_id'].""); 
    $reput = mysqli_num_rows($result); 
} 

$query отлично работает тоже идея, как удовлетворить ошибку?

+0

Попробуйте апостроф? 'WHERE user_ids = '". $ Row [' user_id ']. "'" ' – Zak

+0

отлично, спасибо. Это сработало. Я подумал, что, поскольку идентификатор пользователя является целым, должно быть хорошо – JoshuaNa

+0

Технически не дубликат, так как вопрос был о конкретном ошибка .. Не о «когда» использовать тики и т. д. Хотя вопрос будет информативным для пользователя, без сомнения. Это не дубликат его вопроса ... – Zak

ответ

1

Вы должны использовать одинарные кавычки при вызове то, что не является boolean

WHERE user_ids = '".$row['user_id']."'"

+0

Я думал, что поскольку user_id является числом/целым числом, ему не нужны котировки, но я думаю, что это необходимо. – JoshuaNa

+2

@JoshuaNa: В идеале вы всегда должны указывать переменные в строке SQL. Технически, если это целое число, вам не нужно, но вы явно не проверяли его как целое число. Цитирование и экранирование переменных, даже если вы считаете их безопасными даст вам дополнительную туз ума, зная, что это гораздо труднее взломать. Еще лучше было бы использовать параметризованные выражения вместо того, чтобы строить строку вручную. – Spudley