2014-01-31 64 views
0

MySQL開始讓我瘋狂。幾乎每次出現錯誤時,拋出錯誤的描述都與導致錯誤的錯誤完全不同。準備的查詢,錯誤的變量數量!=參數的數量錯誤

在這種情況下,我想做到以下幾點:當手動執行

$stmt = $mysqli->prepare("SELECT tag_name 
           FROM tags 
           WHERE tag_name LIKE '?%';"); 
$stmt->bind_param('s',$tag_string); 

MySQL查詢本身工作正常,但是當我嘗試綁定值動態上面我得到以下錯誤:

Number of variables doesn't match number of parameters in prepared statement 

這是不對的。誰能告訴我這裏發生了什麼?

回答

2

你不能像這樣連接它,因爲佔位符佔有一個完整值的地方,而不是它的一部分。

正確的查詢看起來像

... LIKE CONCAT(?, '%') 
+0

這是有道理的,謝謝!就像我想的那樣,這與拋出的實際錯誤信息無關。 – nathan

1

更改此

WHERE tag_name LIKE '?%';"); 

對此

WHERE tag_name LIKE ?"); 
+0

所以你認爲'%'是可選的,可以省略? – zerkms