我制作了以下搜索脚本,但在查询数据库时只能搜索一个表列:
$query = "select * from explore where site_name like '%".$searchterm."%'";
我想知道如何搜索整个表格(探索)。另外,我需要修复这行代码:
echo "$num_found. ".($row['site_name'])." <br />";
困扰我的最后一件事是,当我在不同页面上按下提交按钮时,我总是显示消息“请输入搜索词”。即使我输入了什么?
感谢您的帮助,如果需要,这里是整个脚本:
<?php
// Set variables from form.
$searchterm = $_POST['searchterm'];
trim ($searchterm);
// Check if search term was entered.
if (!$serachterm)
{
echo "Please enter a search term.";
}
// Add slashes to search term.
if (!get_magic_quotes_gpc())
{
$searchterm = addcslashes($searchterm);
}
// Connects to database.
@ $dbconn = new mysqli('localhost', 'root', 'root', 'ajax_demo');
if (mysqli_connect_errno())
{
echo "Could not connect to database. Please try again later.";
exit;
}
// Query the database.
$query = "select * from explore where site_name like '%".$searchterm."%'";
$result = $dbconn->query($query);
// Number of rows found.
$num_results = $result->num_rows;
echo "Found: ".$num_results."</p>";
// Loops through results.
for ($i=0; $i <$num_results; $i++)
{
$num_found = $i + 1;
$row = $result->fetch_assoc();
echo "$num_found. ".($row['site_name'])." <br />";
}
// Escape database.
$result->free();
$dbconn->close();
?>
最佳答案
与其他答案相反,我认为您想在查询中使用“OR”,而不是“AND”:
$query = "select * from explore where site_name like '%".$searchterm."%' or other_column like '%".$searchterm."%'";
将
other_column
替换为第二列的名称。您可以不断重复我为每一列添加的部分。注意:这是 假设您的变量
$searchterm
已经为数据库转义 ,例如使用 $mysqli->real_escape_string($searchterm);
。始终确保是这种情况,或者最好使用参数化查询。同样,当输出像
$row['site_name']
这样的变量时,请始终确保将它们转义为 以用于 HTML,例如使用 htmlspecialchars($row['site_name'])
。确保两种表单都使用相同的方法(在您的示例中发布)。
<form>
标签应该有属性 method="post"
。另外,您提到的代码行有什么问题?有错误吗?据我所知,它应该有效。