'where子句'中的未知列'xyz'

时间:2010-08-22 16:57:00

标签: php sql mysql mysql-error-1054

我创建了一个不起作用的用户定义的sql查询。用户应该能够在输入字段中输入搜索字符串,然后提交然后查看搜索结果,但每当我输入搜索我知道在数据库中的内容时,我会在“where子句中获取未知列”“x” “错误信息。

你能帮我解决一下这个问题吗?这是我到目前为止写的代码......

...
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 个答案:

答案 0 :(得分:4)

将代码更改为:
1)将引号转换为列名称后面的反引号 2)使用单个qoutes环绕$ search以使其成为字符串。

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

答案 1 :(得分:1)

这有助于确保 只需将变量$ search更改为字符串即$search 所以它就像这样

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

答案 2 :(得分:0)

我想补充一些关于安全性和性能的内容。

将用户输入(任何GET,POST或cookie数据)直接放入SQL查询是不安全的。这是一个名为SQL injection的严重安全问题。为避免这种情况,请使用mysql_real_escape_string()函数。

此外,SELECT * FROM mytable ...不是一个好习惯。建议明确列出所需的所有列,即使它们都是:

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