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語法錯誤,這是本網站上常見的常見錯誤。你需要處理所有這些情況。 –