gpt4 book ai didi

php - Mysql 没有返回预期结果

转载 作者:行者123 更新时间:2023-11-29 10:52:05 25 4
gpt4 key购买 nike

我已经尝试了很多不同的变体,我不明白为什么这没有返回我的预期结果。这是我现在的代码。我在 LIKE 之后尝试了 SQL 语句中变量的许多变体,但没有返回预期的数组。我还验证了 $search 变量中确实包含正确的字符串。

index.php 操作开关(这可以正常工作):

case 'search_result':
$search = filter_input(INPUT_POST, 'searchBar');
$results = search_books($search);
if($results == NULL){
include('/view/search_null.php');
}else {
include('/view/search_results.php');
}
break;

我的数据库搜索功能:

function search_books($search_word){
global $db;
$query = ' SELECT * FROM books
WHERE bookTitle LIKE :search_word ';
$statement = $db->prepare($query);
$statement->bindValue(":search_word", $search_word);
$statement->execute();
$results_search = $statement->fetchAll();
$statement->closeCursor();
return ($results_search);
}

每次 $results 为 NULL 时,都会将我踢到不返回结果的页面,即使它应该返回结果。在该页面上,我验证 $search 中包含正确的单词,并且 $results 和 $results_search 的数组大小为 0。

(是的,我知道我应该清理 $search,这不会上线,它只是为了作业)

最佳答案

您要寻找的是通过在搜索词中添加 % 来用通配符包围搜索词,如下所示:

$search_word = '%' . $search_word . '%';
<小时/>

然后就像您已经做的那样准备/绑定(bind)/执行。这是更改后的代码:

function search_books($search_word){
global $db;
$search_word = '%' . $search_word . '%'; // added
$query = ' SELECT * FROM books
WHERE bookTitle LIKE :search_word ';
$statement = $db->prepare($query);
$statement->bindValue(":search_word", $search_word);
$statement->execute();
$results_search = $statement->fetchAll();
$statement->closeCursor();
return ($results_search);
}

<小时/> 参数获得其位置后,查询将如下所示:

SELECT * FROM books WHERE bookTitle LIKE '%something here%'

它将查找任何包含 $search_word 的内容。示例:

For $search_word as Rings:
The Lord of the Rings: The Return of the King would be a match.

您可以在此处阅读更多相关信息:Pattern Matching .

关于php - Mysql 没有返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43544282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com