PHP MySQL搜索不返回结果
我创建了一个php搜索脚本来搜索MySQL数据库,但没有搜索返回结果 表格代码PHP MySQL搜索不返回结果,php,mysql,sql,Php,Mysql,Sql,我创建了一个php搜索脚本来搜索MySQL数据库,但没有搜索返回结果 表格代码 <form method="post" action="search.php"> <input type="text" value="Search..." name="query" /> <input type="submit" value="Find" name="completedsearch" /> </form> PHP脚本 <?php
<form method="post" action="search.php">
<input type="text" value="Search..." name="query" />
<input type="submit" value="Find" name="completedsearch" />
</form>
PHP脚本
<?php
if(isset($_POST['completedsearch']))
{
$term = $_POST['query'];
$mysql = mysql_connect("localhost","searchuser","password");
mysql_select_db("hcsd");
$qu = mysql_query("SELECT * FROM your_table WHERE COMPANY LIKE '%{$term}%' OR LOCATION LIKE '%{$term}%' OR KEYWORDS LIKE '%{$term}%' OR PRODUCTSSERVICES LIKE '%{$term}%' ");
echo "
<th>Name</th>
<th>Location</th>
<th>Products/Services</th>
";
while($row = mysql_fetch_array($qu))
{
echo "<tr><td>";
echo $row['COMPANY'];
echo "</td>";
echo "<td>";
echo $row['LOCATION'];
echo "</td>";
echo "<td>";
echo $row['PRODUCTSSERVICES'];
echo "</tr></td>";
}
}
?>
我不确定花括号在这里是否有用
替换
$qu = mysql_query("SELECT * FROM your_table WHERE COMPANY LIKE '%{$term}%' OR LOCATION LIKE '%{$term}%' OR KEYWORDS LIKE '%{$term}%' OR PRODUCTSSERVICES LIKE '%{$term}%' ");
与
您还应该转义输入
$qu = mysql_query("SELECT * FROM your_table WHERE COMPANY LIKE '%".mysql_real_escape_string($term)."%' OR LOCATION LIKE '%".mysql_real_escape_string($term)."%' OR KEYWORDS LIKE '%".mysql_real_escape_string($term)."%' OR PRODUCTSSERVICES LIKE '%".mysql_real_escape_string($term)."%'");
也考虑使用最近的MySQL函数
表的名称是什么?
您应该在phpmyadmin或任何用于管理数据库的软件中尝试您的请求,并查看结果。如果没有结果,则可能是您的请求中有错误。取下大括号:如“%$term%”
并检查:最后,您交换了,它应该回显“”我认为-您可能必须查看生成的html代码删除大括号,仍然没有返回结果您从中选择的表真的被称为“your_table”吗?该表被称为Sheet1。我没有想到,我会用go+1询问表名,稍早之前,我想:)接受了这个答案,因为帮助添加了输入转义和@Chris Wheeler在上面的评论中回答了我的问题。+1改进了这个请求。最好的方法是使用PDO,并按照@Chris Wheeler的建议使用prepare request或最近的mysqli。它更安全。PHP文档推荐:它不是“附加安全性”,而是正确编写。如果用户数据包含“
之类的字符,则无法转义将导致各种错误。
$qu = mysql_query("SELECT * FROM your_table WHERE COMPANY LIKE '%".mysql_real_escape_string($term)."%' OR LOCATION LIKE '%".mysql_real_escape_string($term)."%' OR KEYWORDS LIKE '%".mysql_real_escape_string($term)."%' OR PRODUCTSSERVICES LIKE '%".mysql_real_escape_string($term)."%'");