0

我创建了一个不起作用的用户定义的 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());
  }

?>
4

3 回答 3

4

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

 $rslt = mysql_query("SELECT * FROM mytable WHERE `mycolumn` RLIKE '{$search}'");
于 2010-08-22T17:01:05.313 回答
1

这肯定有助于将变量 $search 更改为字符串,即$search 它会像这样

$rslt = mysql_query("SELECT * FROM mytable WHERE mycolumn RLIKE '$search'");
于 2011-04-09T23:15:26.793 回答
0

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

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

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

SELECT col1, col2, col3, col4, col5 FROM mytable ...
于 2010-08-22T18:12:27.117 回答