我制作了以下搜索脚本,但在查询数据库时只能搜索一个表列:

$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"

另外,您提到的代码行有什么问题?有错误吗?据我所知,它应该有效。

10-05 22:49
查看更多