来自数组的 PDO bindParam 变量数据类型
PDO bindParam variable datatype from array
我有一个将 mysql 列与 PDO 数据类型相关联的数组:
$imp->datafields=array(
"id" => "PARAM_INT",
"name" => "PARAM_STR",
"cookieLength" => "PARAM_INT"
);
我想使用 foreach() 绑定这些参数
foreach($imp->datafields AS $key => $value) {
$stmt->bindParam(':$key', $program->$key, PDO::$value);
}
并得到这个错误:
PHP Fatal error: Access to undeclared static property: PDO::$value
我该如何解决这个问题?
只需更改数组定义即可使用 PDO 常量,如下所示:
$imp->datafields=array(
"id" => PDO::PARAM_INT,
"name" => PDO::PARAM_STR,
"cookieLength" => PDO::PARAM_INT
);
然后在你的 foreach 循环中单独使用 $value
像这样:
$stmt->bindParam(":$key", $program->$key, $value);
//^ ^ ^^^^^^
并且还使用双引号在其中解析变量!
如果你真的想要在每次迭代中使用 constant()
,你还可以做什么:
$stmt->bindParam(":$key", $program->$key, constant("PDO::$value"));
我有一个将 mysql 列与 PDO 数据类型相关联的数组:
$imp->datafields=array(
"id" => "PARAM_INT",
"name" => "PARAM_STR",
"cookieLength" => "PARAM_INT"
);
我想使用 foreach() 绑定这些参数
foreach($imp->datafields AS $key => $value) {
$stmt->bindParam(':$key', $program->$key, PDO::$value);
}
并得到这个错误:
PHP Fatal error: Access to undeclared static property: PDO::$value
我该如何解决这个问题?
只需更改数组定义即可使用 PDO 常量,如下所示:
$imp->datafields=array(
"id" => PDO::PARAM_INT,
"name" => PDO::PARAM_STR,
"cookieLength" => PDO::PARAM_INT
);
然后在你的 foreach 循环中单独使用 $value
像这样:
$stmt->bindParam(":$key", $program->$key, $value);
//^ ^ ^^^^^^
并且还使用双引号在其中解析变量!
如果你真的想要在每次迭代中使用 constant()
,你还可以做什么:
$stmt->bindParam(":$key", $program->$key, constant("PDO::$value"));