Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中获取搜索结果_Php_Mysql - Fatal编程技术网

如何在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 . "%'";