Это означает, что вы уязвимы к SQL инъекции, и код не делает достаточной проверки ошибок.
Абсолютный скелетным «безопасный» бит кода будет:
еще
<?php
... connect to db ...
$stringval = mysql_real_escape_string($_GET['param']);
$sql = "SELECT somefield FROM sometable WHERE otherfield='$stringval'";
$result = mysql_query($sql) or die(mysql_error());
лучше отказаться от использования функции MySQL и переключиться на PDO и параметризованных запросов. Они автоматически обрабатывают проблемы с впрыском.
Коренной причиной сообщения об ошибке является то, что ваш запрос вызвал синтаксическую ошибку. Когда запрос выходит из строя так же, mysql_query()
возвращает логическое значение FALSE, а не дескриптор инструкции.
Поскольку у вас отсутствует какая-либо проверка ошибок, вы слепо взяли это логическое значение false и передали его функции выборки, которая по праву пожаловалась, что вы не предоставили дескриптор результата.
Возможный дубликат [Лучший способ остановить SQL Injection в PHP] (http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php) –
Недостаточно информации ответить на этот вопрос, не догадываясь. Отсутствует [минимальный образец кода] (http://sscce.org/), который должен иметь каждый вопрос SO. – outis