如何在php中获取搜索结果
当我通过查询时,我很难从数据库中获取结果。我的问题是,当用户在输入中键入某个值时,它会将值传递给操作。但我的功能不起作用。通过以下错误:如何在php中获取搜索结果,php,mysql,Php,Mysql,当我通过查询时,我很难从数据库中获取结果。我的问题是,当用户在输入中键入某个值时,它会将值传递给操作。但我的功能不起作用。通过以下错误: Fatal error: Call to a member function fetch_assoc() on boolean in D:\e.batgerel\development\projects\travelagency\includes\functions.php on line 409 下面是我的代码示例: <form action="se
Fatal error: Call to a member function fetch_assoc() on boolean in D:\e.batgerel\development\projects\travelagency\includes\functions.php on line 409
下面是我的代码示例:
<form action="search.php?search=<?php echo $_GET['search']; ?>" method="GET">
<input type="text" name="search" placeholder="Хайлт хийх" aria-label="search_input"/ >
<button type="submit">
<i class="fa fa-search"></i>
</button>
</form>
和功能:
function search($search) {
global $conn;
$sql = "SELECT * FROM travels WHERE title LIKE '%$search%' OR description LIKE '%$search%'";
$result = $conn -> query($sql);
$list = array();
while($row = $result->fetch_assoc()) {
$list[] = $row;
}
return $list;
}
有解决办法吗?我做错了什么?谢谢。mysqli::query失败时返回FALSE: 因此,您首先需要确保结果不为FALSE:
if ($result = $conn->query($sql)) {
// here result processing
} else {
// here error handling
}
尝试替换此选项:
$sql = "SELECT * FROM travels WHERE title LIKE '%$search%' OR description LIKE '%$search%'";
为此:
$sql = "SELECT * FROM travels WHERE title LIKE '%" . $search . "%' OR description LIKE '%" . $search . "%'";
$_GET['search']的内容是什么?只是一些文本您的查询无法执行,请仔细检查它只是一个注释,此代码似乎很容易在您的$search字符串中输入一个。您可能想考虑使用。它让我觉得很粗野。这意味着什么?这意味着,您的查询无法执行,请仔细检查它的语法问题,或者检查$conn是否不为空。@KhShuren Erdene这是什么意思?你应该检查一下,看看这是什么意思。手册上说失败时返回FALSE。您还将在手册示例中看到如何处理这些错误。在这种情况下,使用mysql\u error会很有帮助。您至少可以解释字符串插值失败的原因;此外,提供的解决方案也有语法错误。另外,正如在问题评论中提到的:这样的查询很容易被sql注入。在分析所有这些之前,我认为他应该首先确认它是否适合他。之后,我们可以讨论优化查询本身。提示:在LIKE条件开始时不应使用%通配符,因为它将生成完整的表扫描,从而降低性能。
$sql = "SELECT * FROM travels WHERE title LIKE '%" . $search . "%' OR description LIKE '%" . $search . "%'";