我有这个准备好的语句查询
$stmt = $conn->prepare("
UPDATE language
SET lang_alias=:lang_alias , lang_name=:lang_name
WHERE lang_id=:lang_id"
);
如果我设置一个数组来绑定值
$query_array = array ( ":lang_alias" => "en", ":lang_name" => "English (UK)", ":lang_id" => 1 ) ;
然后执行它
$stmt->execute(array($query_array));
它不会工作,我明白了
注意:数组到字符串的转换
referring to
$stmt->execute(array($query_array));
并Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number'
指同一行。
然后我尝试使用bindParam
绑定值
$stmt->bindParam(':lang_alias', $a);
$stmt->bindParam(':lang_name', $c);
$stmt->bindParam(':lang_id', $d3, PDO::PARAM_INT);
并且工作正常
如果我尝试另一种bindParam
语法
$stmt->bindParam("sssiii", $a, $b, $c, $d1, $d2, $d3);
它不会工作。给
警告:PDOStatement::bindParam() 最多需要 5 个参数,给定 7 个参数
referring to
$stmt->bindParam("sssiii", $a, $b, $c, $d1, $d2, $d3);
和
未捕获的异常“PDOException”,带有消息“SQLSTATE[HY000]:一般错误:2031”
referring to
$stmt->execute();
1.错误是由于默认情况下准备好的语句转换为字符串所有值,所以我必须int
手动定义吗?这就是为什么bindParam
工作正常?还是我缺少其他东西?
2.为什么bindParam("sssiii"...
语法不起作用?
3.我希望这个查询动态地获取它的值,所以bindParam
不能手动使用。我想使用关联数组或bindParam("sssiii"...
语法。
我怎样才能做到这一点?谢谢