2017-03-06 112 views
1

我有一些相似(但不完全相同)的sql語句。每個調用的參數類型都不相同,所以我想將它們作爲變量傳遞。例如:在mysqli中使用變量bind_param

$stmt->bind_param($typeString, $parameter1, $parameter1); 

其中$ typeString可以設置爲'ss'或'is'或'ds'。

我得到的錯誤類型定義字符串中的元素數量與綁定變量的數量不匹配。

我曾嘗試(例如)

$typeString = "is"; 
$typeString = "\'".$typeString."\'"; 
$stmt->bind_param($typeString, $parameter1, $parameter1); 

而且

$typeString = "is"; 
$stmt->bind_param($typeString, $parameter1, $parameter1); 

但仍得到一個錯誤。

是否可以用變量設置它?

+1

sql statment在哪裏?永遠不要綁定變量兩次,你使用'$ parameter1'兩次。 – JustOnUnderMillions

+0

而你只是一次綁定:http://stackoverflow.com/questions/15748254/how-to-run-the-bind-param-statement-in-php#15748384然後重新填充參數變量並再次執行。如果可能的話,總是使用'​​s'作爲參數。 – JustOnUnderMillions

+0

_數量相似(但不相同)的sql語句_所以如果你有2個sql語句,那麼你也有2個mysqli stmt對象(每個stmt)。所以這裏沒有什麼應該混淆的 – JustOnUnderMillions

回答

1
  1. 第一個變體沒有意義,因爲引號不應該發送到類型定義列表中。
  2. 第二個變體實際上起作用。
  3. 設置特定參數幾乎沒有用處。只需使用's'即可。