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