2017-03-06 106 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'即可。