У меня есть массив, который связывает 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"));
Других решений пока нет …