我是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'];
}
?>
<?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'];
}
?>
感谢任何帮助。现在代码无错误但没有输出。对所有变化和建议持开放态度。
答案 0 :(得分:1)
添加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());
最后但最重要的是在使用mysql_real_escape_string
函数转义字符串之前将其附加到SQL查询中。
答案 1 :(得分:1)
开始的三件事
trigger_error
函数查看查询中是否有任何错误因此可以将一行代码重写为
$search = mysql_real_escape_string($search);
$result = mysql_query("SELECT * FROM torrents WHERE name LIKE '%$search%'") or trigger_error(mysql_error());
这将让您深入了解发生的事情
答案 2 :(得分:0)
WHERE name LIKE '%$search%'
LIKE
。 MySql Manual PDO
答案 3 :(得分:-1)
虽然点击已经确定“无错误”问题,但这里有一些改进的代码。
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("site"));
if (isset($_GET["text"])) { // you have to use GET method for the search
$search = mysql_real_escape_string($_GET["text"]); // an essential thing
$query = "SELECT * FROM torrents WHERE name LIKE '%$search%'";
$result = mysql_query($query) or trigger_error(mysql_error()." ".$query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo $row['name'];
}
}