我试图在我的主页上实现一个非常简单的搜索表单,但它并不像我想要的那样完全正常工作..
看起来表单中的链接运行良好,即使数据库搜索现在也可以使用,这要归功于最新的更新。
问题是:当搜索准备好并显示结果时( echo $ output ),我总是只看到一个结果,但我想要所有匹配到显示..
有什么建议吗?
提前致谢:)
search.php 文件:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
<?php
$conn = mysqli_connect("localhost", "user", "password", "table");
if(mysqli_connect_errno() ) {
echo "Failed to connect: " . mysqli_connect_error();
}
?>
<?php
$output = '';
if(isset($_GET['query']) && $_GET['query'] !== ' ') {
$searchquery = $_GET['query'];
$query = mysqli_query($conn, "SELECT * FROM tbl_users WHERE username LIKE '%$searchquery%' OR email LIKE '%searchquery%'") or die(mysqli_error());
$num_rows = mysqli_num_rows($query);
if($num_rows== 0) {
$output = 'No search results for <b>"' . $searchquery . '"</b>';
} else {
while($row = mysqli_fetch_array($query)){
$id = $row['id'];
$username = $row['username'];
$email = $row['email'];
$output = "<a href='profile.php?user=$id'>$username</a>";
}
}
} else {
header("location: ./");
}
print("$output");
mysqli_close($conn);
?>
答案 0 :(得分:0)
%$query%
需要用查询字符串中的单引号括起来,如下所示:
SELECT * FROM tbl_users WHERE username LIKE '%$query%' OR email LIKE '%$query%'
但是现在您的代码很容易受到SQL注入攻击。你应该考虑下一步修复。请参阅:How can I prevent SQL injection in PHP?