0
我想在列上执行FULLTEXT搜索,并且如果第一次返回零行,那么在布尔模式下进一步搜索FULLTEXT。如果我在命令行手动输入SQL查询到MySQL,我会得到我期望的结果,但是这段代码将一个空数组返回给我的JS。 任何想法,我要去哪里?PHP全文搜索不起作用
$con = mysqli_connect($db_url, $db_user, $db_pwd, $db);
if(!$con) {
error_log("Connection failed!");
die();
}
$sql = "SELECT problem, note_text, doctor, entry_date FROM notes WHERE mrn=? AND MATCH(note_text) AGAINST(?)";
$stmt = mysqli_prepare($con, $sql);
mysqli_stmt_bind_param($stmt, 'is', $_POST['mrn'], $_POST['search_text']);
$success = mysqli_stmt_execute($stmt);
if(mysqli_stmt_num_rows($stmt) == 0) { // Then try fulltext search in boolean mode
$sql = "SELECT problem, note_text, doctor, entry_date FROM notes WHERE mrn=? AND MATCH(note_text) AGAINST(? IN BOOLEAN MODE)";
$stmt = mysqli_prepare($con, $sql);
mysqli_stmt_bind_param($stmt, 'is', $_POST['mrn'], $_POST['search_text']);
$success = mysqli_stmt_execute($stmt);
}
mysqli_bind_result($stmt, $problem, $note_text, $doctor, $date);
$notes = array();
for($i = 0; mysqli_stmt_fetch($stmt) == TRUE; ++$i) {
$notes[$i] = array('problem' => $problem, 'note' => $note_text, 'doctor' => $doctor, 'date' => $date);
}
$json = json_encode($notes);
echo $json;
您的所有代码都只是假设查询调用成功。永远不会成功。假设失败并将成功视为令人惊喜的事情。开始检查你的mysqli调用的返回值。 –
谢谢,我会加入一张支票。但假设它成功了(现在全部是本地主机)...... – Amoeba
只有一种方法可以使查询成功:它只是起作用。但接近无限的失败方式。只有**这些方式**如果数据库服务器崩溃或其他方式**。仍然存在sql语法错误,这是本网站上常见的常见错误。你需要处理所有这些情况。 –