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)
与其他答案相反,我认为您希望在查询中使用"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".
另外,你提到的代码行有什么问题?有错误吗?它应该尽我所能.