Неизвестный столбец 'xyz' в 'предложении where'

0

Я создал пользовательский 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());
  }

?>
  • 0
    Попробуйте использовать обратные кавычки, а не кавычки при «обтекании» имен таблиц или столбцов, но вы должны заключать в кавычки такие строки, как $ search
  • 0
    Так у вас есть колонка с именем mycolumn там? А стол с именем mytable?
Теги:
mysql-error-1054

3 ответа

4

Измените код: 1) Преобразование цитат в обратные вызовы вокруг имени столбца.
2) Surround $search с одиночными qoutes, чтобы сделать его строкой.

 $rslt = mysql_query("SELECT * FROM mytable WHERE `mycolumn` RLIKE '{$search}'");
Показать ещё 1 комментарий
1

Это помогает просто измените переменную $search, которая будет считана как строка i.e $search так оно и будет.

$rslt = mysql_query("SELECT * FROM mytable WHERE mycolumn RLIKE '$search'");
0

Я хотел бы добавить несколько о безопасности и производительности.

Небезопасно вводить пользовательский ввод (любые данные GET, POST или cookie) непосредственно в запрос SQL. Это серьезная проблема безопасности, называемая SQL injection. Чтобы избежать этого, используйте mysql_real_escape_string().

Кроме того, SELECT * FROM mytable ... не является хорошей практикой. Рекомендуется явно перечислять все необходимые столбцы, даже если они все:

SELECT col1, col2, col3, col4, col5 FROM mytable ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню