Php 为什么mysqli中的搜索栏中没有显示成功的结果
我的Mysqli代码没有显示成功搜索的结果。该查询在语句方面是正确的,因为这是在MYSQL中测试的。但是当尝试使用mysqli时,我似乎无法在成功搜索后显示结果。我做错了什么?在执行错误报告时,我没有收到任何错误,查询中也没有拼写错误。我不知道这是因为查询需要跳出循环,还是因为我绑定了错误的参数或类似的东西,但代码在旧的mysql代码中工作,但在mysqli中无法工作(由于我的PHP版本,无法使用PDO) 应用程序的URL为。如果你输入“AAD”,它会说它找不到任何结果,而实际上它应该这样做,因为数据库中有5行包含术语“AAD” 以下是表格代码:Php 为什么mysqli中的搜索栏中没有显示成功的结果,php,mysqli,Php,Mysqli,我的Mysqli代码没有显示成功搜索的结果。该查询在语句方面是正确的,因为这是在MYSQL中测试的。但是当尝试使用mysqli时,我似乎无法在成功搜索后显示结果。我做错了什么?在执行错误报告时,我没有收到任何错误,查询中也没有拼写错误。我不知道这是因为查询需要跳出循环,还是因为我绑定了错误的参数或类似的东西,但代码在旧的mysql代码中工作,但在mysqli中无法工作(由于我的PHP版本,无法使用PDO) 应用程序的URL为。如果你输入“AAD”,它会说它找不到任何结果,而实际上它应该这样做,因
<form action="previousquestions.php" method="get">
<p>Search: <input type="text" name="questioncontent" value="<?php echo $questioncontent; ?>" onchange="return trim(this)" /></p>
<p><input id="searchquestion" name="searchQuestion" type="submit" value="Search" /></p>
</form>
搜索:更改语句:
$questionquery .= "IF(q.QuestionContent LIKE '%'.$each.'%' ,1,0)";
$questionquery .= "q.QuestionContent LIKE '%'.$each.'%' ";
$questionquery .= "OR q.QuestionContent LIKE '%'.$each.'%' ";
就此(分别):
另外,我认为您需要对$stmt
变量执行以下操作:
$stmt = $mysqli->stmt_init();
$stmt->prepare($questionquery);
//execute query
$stmt->execute();
更改声明:
$questionquery .= "IF(q.QuestionContent LIKE '%'.$each.'%' ,1,0)";
$questionquery .= "q.QuestionContent LIKE '%'.$each.'%' ";
$questionquery .= "OR q.QuestionContent LIKE '%'.$each.'%' ";
就此(分别):
另外,我认为您需要对$stmt
变量执行以下操作:
$stmt = $mysqli->stmt_init();
$stmt->prepare($questionquery);
//execute query
$stmt->execute();
出现此错误消息的原因是,$stmt
不是一个。原因是传递给$mysqli->prepare
的语句中存在语法错误
"… q.QuestionContent LIKE '%'.$each.'%' "
这会导致如下结果:
… q.QuestionContent LIKE '%'.<value of each>.'%'
哦,再说一遍:你真的应该看看。这会使整个手动查询建筑过时:
… WHERE MATCH (q.QuestionContent) AGAINST ("search terms" IN NATURAL LANGUAGE MODE)
出现此错误消息的原因是,$stmt
不是一个。原因是传递给$mysqli->prepare
的语句中存在语法错误
"… q.QuestionContent LIKE '%'.$each.'%' "
这会导致如下结果:
… q.QuestionContent LIKE '%'.<value of each>.'%'
哦,再说一遍:你真的应该看看。这会使整个手动查询建筑过时:
… WHERE MATCH (q.QuestionContent) AGAINST ("search terms" IN NATURAL LANGUAGE MODE)
@秋葵汤不是在@t-ShirtDude上定义的,我只是在你的应用程序中测试你的答案。我将在5分钟内告诉您发生了什么:)准备语句的原因之一是将命令和数据分开。但在这里你又弄混了。@T-ShirtDude OK它已经删除了致命错误,但是如果我回到上一个问题,它会导致搜索栏无法正常工作。有一个小问题,如果它是一个成功的搜索,它不会显示搜索结果,你对此有什么想法吗?我正在更新代码,给我2分钟时间我已经更新了代码,我还没有包括此代码:$stmt=$mysqli->stmt_init()代码>,因为它删除了错误,但没有此选项。我确实在我的应用程序中尝试了这一行代码,但它并没有改变显示结果的结果search@Gumbo这不就是@t-ShirtDude上定义的吗?我只是在你的应用程序中测试你的答案。我将在5分钟内告诉您发生了什么:)准备语句的原因之一是将命令和数据分开。但在这里你又弄混了。@T-ShirtDude OK它已经删除了致命错误,但是如果我回到上一个问题,它会导致搜索栏无法正常工作。有一个小问题,如果它是一个成功的搜索,它不会显示搜索结果,你对此有什么想法吗?我正在更新代码,给我2分钟时间我已经更新了代码,我还没有包括此代码:$stmt=$mysqli->stmt_init()代码>,因为它删除了错误,但没有此选项。我确实在我的应用程序中尝试了这一行代码,但它没有改变显示搜索结果的结果。Hi,Gumbo只是2个小问题,你在哪里显示了全文搜索的f行代码,我如何将这一行代码放在查询中,我是否将它放在where子句旁边,然后为这两个类似语句添加and子句?另外,在测试代码时,它在提交搜索后向我显示一条警告,说明警告:call_user_func_array()[function.call user func array]:第一个参数应该是有效的回调,'mysqli_stmt::bind_params'在。。。在线98
。向上投票answer@user1421767我还没有测试这个查询;由于语法错误,准备它仍然可能失败。如果你想使用全文搜索,请先阅读链接页面。它将解释所有必要的内容。我将阅读文档,但要说的是将类似的语句替换为“MATCH(q.QuestionContent)”对(“search terms”在自然语言模式下)`?或者我还需要使用LIKE语句吗?@user1421767不,单个匹配…对…
将替换所有…LIKE…
表达式。因此我的查询应该是:$questionquery=“从回答内部连接问题q上选择*q.AnswerId=an.AnswerId加入回答r上q.ReplyId=r.ReplyId加入选项\u表o上的q.OptionId=o.OptionId,其中匹配(q.QuestionContent)与自然语言模式下的($each)”;
(使用$each匹配术语)然后用group by,orderby完成查询,如果我在查询的末尾有一个小问题Hi,Gumbo只是2个小问题,在这里你已经显示了全文搜索的f行代码,我如何将这行代码放在查询中,我是否将它放在where子句旁边,然后为这两个lIKE语句添加And子句?同样在测试代码时,它在提交搜索后向我显示一条警告,说明警告:call\u user\u func\u array()[function.call user func array]:第一个参数应该是有效的回调,'mysqli_stmt::bind_params'在第98行的…中给出answer@user1421767我尚未测试该查询;由于语法错误,准备该查询可能仍会失败。如果您想使用全文搜索,请先阅读链接页面。它将解释所有必要的内容。我将在文档中,但是你说替换类似的语句作为“MATCH(q.QuestionContent)from”(“search terms”在自然语言模式下)`?或者我仍然需要使用类似的语句吗?@user1421767不,单个匹配…from…
将替换所有?