PDO тип данных переменной bindParam из массива

У меня есть массив, который связывает 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

Как я могу решить эту проблему?

2

Решение

Просто измените определение массива, чтобы использовать константы 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"));
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]