来自数组的PDO bindParam变量数据类型

Don*_*000 2 php mysql arrays pdo bindparam

我有一个数组,它将mysql-colums与PDO数据类型联系起来:

$imp->datafields=array(
  "id"           => "PARAM_INT",
  "name"         => "PARAM_STR",
  "cookieLength" => "PARAM_INT"
);
Run Code Online (Sandbox Code Playgroud)

我想使用foreach()绑定这些参数

foreach($imp->datafields AS $key => $value) {
   $stmt->bindParam(':$key', $program->$key, PDO::$value);
}
Run Code Online (Sandbox Code Playgroud)

并得到此错误:

PHP Fatal error:  Access to undeclared static property: PDO::$value
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

Riz*_*123 5

只需更改数组定义即可使用PDO常量,如下所示:

$imp->datafields=array(
  "id"           => PDO::PARAM_INT,
  "name"         => PDO::PARAM_STR,
  "cookieLength" => PDO::PARAM_INT
);
Run Code Online (Sandbox Code Playgroud)

然后在你的foreach循环中$value,就像这样单独使用:

$stmt->bindParam(":$key", $program->$key, $value);
               //^     ^                  ^^^^^^
Run Code Online (Sandbox Code Playgroud)

并使用双引号,变量在其中解析!

如果您真的希望它只是constant()在每次迭代中使用,您也可以这样做:

$stmt->bindParam(":$key", $program->$key, constant("PDO::$value"));
Run Code Online (Sandbox Code Playgroud)