我是PHP和mysql的新手,我想知道我是否可以在搜索数据库和返回结果的代码方面获得一些帮助。
<?php
$con = mysql_connect("localhost", "root", "");
if (!$con) {
die ("could not connect to db");
}
if (!mysql_select_db("site", $con)) {
die ("Could not connect to table");
}
$search = $_POST["text"];
$result = mysql_query("SELECT * FROM torrents WHERE name ='$search'"); //or LIKE instead of =
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
echo $row['name'];
}
?>
任何帮助都是非常感谢的。现在,代码运行时没有错误,但没有输出。对所有更改和建议都持开放态度。
发布于 2012-02-18 17:06:37
首先要做三件事
使用根作为username
trigger_error
函数查看查询中是否有任何错误
因此您的一行代码可以重写为
$search = mysql_real_escape_string($search);
$result = mysql_query("SELECT * FROM torrents WHERE name LIKE '%$search%'") or trigger_error(mysql_error());
这将使您深入了解正在发生的事情。
发布于 2012-02-18 17:04:28
添加mysql_error()
并检查查询中是否有任何错误。
$result = mysql_query("SELECT * FROM torrents WHERE name ='$search'")
or trigger_error(mysql_error());
如果查询成功,则表可能没有任何匹配的行。
如果您不想要完全匹配,而想要近似匹配,则可以使用LIKE
子句代替=
$result = mysql_query("SELECT * FROM torrents WHERE name LIKE '%$search%'")
or trigger_error(mysql_error());
最后但并非最不重要的一点是,在SQL query中添加字符串之前,使用mysql_real_escape_string
函数对字符串进行转义。
发布于 2012-02-18 17:08:30
WHERE name LIKE '%$search%'
LIKE
引擎)来加速搜索查询,而不是LIKE
。用于SQLInjection.PDO
https://stackoverflow.com/questions/9339937
复制相似问题