我正在創建一個簡單的mysqli prepared語句,該語句根據搜索從數據庫中選擇記錄。我想使用提交的相同搜索詞搜索數據庫表中的兩個不同列,以找到標題或內容詳細信息中的任何匹配項。我使用Lynda.com上的David Powers視頻跟蹤了面向對象PHP的訪問數據庫,並調整了該教程以適應我的需求。我大部分工作,但是我遇到了一個問題,當我在我的sql語句中添加第二個變量。問題是它沒有返回任何行。 。這裏是我的代碼:LIKE/OR運算符在準備語句中的mysqli select語句中發出
$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( 'S',$ VAR1,$ VAR2 );'應該是'$ stmt-> bind_param('ss',$ var1,$ var2);'你錯過了's' /參數。 – 2014-09-19 14:35:32