Я создал пользовательский SQL-запрос, который не работает. Предполагается, что пользователи могут вводить строки поиска в поле ввода, затем представлять результаты поиска, но каждый раз, когда я вхожу в поиск чего-то, что я знаю, в базе данных, я получаю неизвестный столбец "x" в разделе "where" "сообщение об ошибке.
Не могли бы вы помочь мне решить проблему? Вот код, который я написал для него до сих пор...
...
mysql_select_db("mydb", $c);
$search = $_POST['search'];
$rslt = mysql_query("SELECT * FROM mytable
WHERE 'mycolumn' RLIKE $search");
while($row = mysql_fetch_array($rslt))
{
echo $row['myrow'];
echo "<br />";
}
if (!$row)
{
die('uh oh: ' . mysql_error());
}
?>
Измените код:
1) Преобразование цитат в обратные вызовы вокруг имени столбца.
2) Surround $search с одиночными qoutes, чтобы сделать его строкой.
$rslt = mysql_query("SELECT * FROM mytable WHERE `mycolumn` RLIKE '{$search}'");
Это помогает
просто измените переменную $search, которая будет считана как строка i.e $search
так оно и будет.
$rslt = mysql_query("SELECT * FROM mytable WHERE mycolumn RLIKE '$search'");
Я хотел бы добавить несколько о безопасности и производительности.
Небезопасно вводить пользовательский ввод (любые данные GET, POST или cookie) непосредственно в запрос SQL. Это серьезная проблема безопасности, называемая SQL injection. Чтобы избежать этого, используйте mysql_real_escape_string().
Кроме того, SELECT * FROM mytable ...
не является хорошей практикой. Рекомендуется явно перечислять все необходимые столбцы, даже если они все:
SELECT col1, col2, col3, col4, col5 FROM mytable ...