[英]Issue with LIKE/OR operator in mysqli select statement in a prepared statement
我正在創建一個簡單的mysqli准備好的語句,該語句根據搜索從數據庫中選擇記錄。 我想使用提交的同一搜索詞在數據庫表中搜索兩個不同的列,以查找標題或內容詳細信息中的任何匹配項。 我一直在Lynda.com上觀看帶有David Powers的使用面向對象的PHP訪問數據庫的視頻,並對該教程進行調整以適應我的需求。 我大部分工作正常,但是在sql語句中添加第二個變量時遇到問題。 問題是它不返回任何行。 。 這是我的代碼:
$sql = "SELECT id, heading, details, layout FROM content WHERE ( details LIKE ? OR heading LIKE ? )";
$stmt = $db->stmt_init();
if (!$stmt->prepare($sql)) {
$error = $stmt->error;
} else {
$stmt->bind_param('s', $var1, $var2);
$var1 = '%' . $_GET['searchterm'] . '%';
$var2 = '%' . $_GET['searchterm'] . '%';
如果我在SQL中刪除第一個占位符之后的部分,並從$ stmt-> bind_param('s',$ var1,$ var2)中刪除“ $ var2”; 然后查詢工作正常。 例如,以下返回正確的結果:
$sql = "SELECT id, heading, details, layout FROM content WHERE details LIKE ?";
$stmt = $db->stmt_init();
if (!$stmt->prepare($sql)) {
$error = $stmt->error;
} else {
$stmt->bind_param('s', $var1);
$var1 = '%' . $_GET['searchterm'] . '%';
一旦添加了第二個變量,就不會返回任何結果。 我也嘗試了以下方法,但也返回0結果:
$stmt->bind_param('s', $var1, $var1);
$var1 = '%' . $_GET['searchterm'] . '%';
我是剛准備好的聲明的新手,所以任何建議或指導都將不勝感激。 謝謝。
雖然我對參數綁定不是很熟悉,但是您不應該為每個參數指定類型,即
$stmt->bind_param('ss', $var1, $var2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.