【发布时间】:2017-03-06 13:11:44
【问题描述】:
我有许多类似(但不相同)的 sql 语句。每次调用的参数类型都不同,所以我想将它们作为变量传递。像这样的:
$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 );
但还是报错。
可以用变量来设置吗?
【问题讨论】:
-
sql语句在哪里?并且永远不要绑定一个变量两次,你使用两次
$parameter1。 -
您只需绑定一次:stackoverflow.com/questions/15748254/… 然后重新填充参数变量并再次执行。如果可能,请始终使用
s作为参数类型。 -
相似(但不相同)的 sql 语句的数量 因此,如果您有 2 个 sql 语句,那么您也有 2 个 mysqli stmt 对象(每个 stmt 对象)。所以这里不应该混淆。
-
不确定我明白了。您想为不同的查询重用准备好的语句吗?
-
不在这里:重用有界变量用于查询的不同执行。 stmts 是为多执行而设计的!将其发送一次到 sql 服务器(使用占位符查询),但使用 diff 参数执行它(仅变量发送到 mysql)。