搜索整个表?PHP MySQL

Spy*_*n02 4 php mysql sql search

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

$query = "select * from explore where site_name like '%".$searchterm."%'";
Run Code Online (Sandbox Code Playgroud)

我想知道如何搜索整个表格(探索).另外,我需要修复这行代码:

echo "$num_found. ".($row['site_name'])." <br />";
Run Code Online (Sandbox Code Playgroud)

最后一件令我烦恼的事情是,当我在另一个页面上按下提交按钮时,我总是会显示消息"请输入搜索词".即使我进入某事物?

感谢您的帮助,如果需要,这是整个脚本:

<?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();
?>
Run Code Online (Sandbox Code Playgroud)

Dis*_*oat 7

与其他答案相反,我认为您希望在查询中使用"OR",而不是"AND":

$query = "select * from explore where site_name like '%".$searchterm."%' or other_column like '%".$searchterm."%'";
Run Code Online (Sandbox Code Playgroud)

替换other_column为第二列的名称.您可以继续重复我为每个列添加的部分.

注意:这假设您的变量$searchterm已经为数据库进行了转义,例如使用$mysqli->real_escape_string($searchterm);.始终确保是这种情况,或者更好地使用参数化查询.

类似地,在输出变量时$row['site_name'] 总是确保为HTML 转义它们,例如使用htmlspecialchars($row['site_name']).

最后一件令我烦恼的事情是,当我在另一个页面上按下提交按钮时,我总是会显示消息"请输入搜索词".即使我进入某事物?

确保两个表单使用相同的方法(在您的示例中发布).该<form>标签应具备的属性method="post".

另外,你提到的代码行有什么问题?有错误吗?它应该尽我所能.