Неизвестный столбец 'xyz' в 'предложении where' - PullRequest
0 голосов
/ 22 августа 2010

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

?>

Ответы [ 3 ]

4 голосов
/ 22 августа 2010

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

 $rslt = mysql_query("SELECT * FROM mytable WHERE `mycolumn` RLIKE '{$search}'");
1 голос
/ 10 апреля 2011

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

$rslt = mysql_query("SELECT * FROM mytable WHERE mycolumn RLIKE '$search'");
0 голосов
/ 22 августа 2010

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

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

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

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