Как исправить это: «Предупреждение: mysql_num_rows () ожидает, что параметр 1 будет ресурсом, boolean задан в //"?

Возможный дубликат:
mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, boolean задан в select

// ошибка находится в строке 13

$questions =$_POST['question_text']; $checkquestion=mysql_query("SELECT question_text FROM questions LIKE '$questions' "); if(mysql_num_rows($checkquestion)) { //line 13 echo "Question exist."; } else{ mysql_query("INSERT INTO questions (question_text,field_name) VALUES ('$_POST[question_text]','$first_word')"); echo "Question saved"; } 

 $checkquestion = mysql_query("SELECT question_text FROM questions LIKE '$questions' "); if (!$checkquestion) { die(mysql_error()); } 

Следующий шаг: Исправьте ваш SQL-запрос.

Вы всегда должны проверить, выполнено ли запрос или нет. Есть миллион возможностей для того, чтобы это пошло не так, и если ваше приложение просто вспахивает вперед, полагая, что оно преуспело в вас: a) получит несвязанные ошибки так, как вы это делаете, и b) не сможет осмыслить ваше собственное приложение.

Как указывает @alex, вы должны сделать более элегантную обработку ошибок, чем это в окончательной версии.

mysql_query возвращает false, если есть ошибка. Вам нужно проверить это, прежде чем вызывать mysql_num_rows .

В несвязанной заметке вы действительно не должны вводить переменную post непосредственно в запрос без использования mysql_real_escape_string или оставить себя открытым для SQL-инъекции.

 $questions = $_POST['question_text']; $checkquestion = mysql_query("SELECT question_text FROM questions LIKE '". $questions ."' "); if(mysql_num_rows($checkquestion)) { //line 13 echo "Question exist."; } else{ mysql_query("INSERT INTO questions (question_text, field_name) VALUES ('". $_POST[question_text] ."','". $first_word ."')"); echo "Question saved"; }