2013-06-26 5 views
0

Я пытаюсь настроить функцию для создания привязок для PDO.PDO: Сгенерированные привязки arent working

Связи генерируются функцией и скомпилированы в массив.

Затем я попытался разобрать значения (оператор привязки) через цикл foreach, но он продолжает бросать Undefined Property.

Цикл выглядит следующим образом:

foreach($binds as $key => $bind){ 
    $stmt -> $bind; 
} 

Какие выходы:

$stmt -> bindValue(':ID', $ID, PDO::PARAM_STR); 
$stmt -> bindValue(':Name', $Name, PDO::PARAM_STR); 
$stmt -> bindValue(':Test', $Test, PDO::PARAM_STR); 

Но это не работает ... почему?

Сообщение об ошибке:

Notice: Undefined property: PDOStatement::$bindValue(':ID', $ID, PDO::PARAM_STR)

(делает это для всех)

+0

Показать ** точное сообщение об ошибке **. '$ stmt -> $ bind;' --- это не имеет смысла. – zerkms

+1

Довольно уверен, что экземпляр $ bind выглядит как «bindValue (': ID', $ ID, PDO :: PARAM_STR); поэтому он может привязывать его непосредственно к объекту $ stmt. –

+0

@Mike Purcell: lol what? Вы не можете этого сделать :-) – zerkms

ответ

2

Я пытаюсь создать функцию для создания привязок для PDO.

Это не нужно. У PDO уже есть такая функция, которая называется execute(). Итак, вместо вашей петли просто запустите

$stmt->execute($binds); 
+0

Затем я получаю 'Warning: PDOStatement :: execute() [pdostatement.execute]: SQLSTATE [HY093]: Недопустимый номер параметра: параметр не определен'. Я ожидал, что цикл будет работать, поскольку, если я помещаю то, что он выводит напрямую, он действительно работает:/ –

+0

На самом деле, просто изменил $ binds на мои значения $, которые выходят [key] = 'value' array. Так что это совершенно безопасно и связывает его, чтобы предотвратить инъекцию? –