Я думаю, что я прочитал много тем по этому вопросу, но все равно получаю неправильный результат. У меня есть массив параметров запроса, который я хочу связать с foreach()
для привязки параметров.PDO foreach loop over bindParam со ссылкой возвращает неверный результат
foreach($aQueryParams as $key => &$value){
$stmt->bindParam($key, $value);
}
Это относится к INSERT
запроса и то, что я получаю в результате ключ вставлен в моей таблице вместо значения. Но я уверен, что ключ и ценность хороши и в хорошем месте. A var_dump()
по телефонам $key
и $value
введите :firstName
для $key
и Samy
для &$value
. Но это :firstName
, который вставлен в мою таблицу ...
И я также пробовал с bindValue
без использования ссылки, и это тот же результат.
Чтобы быть яснее, я даю вам ссылку на репозиторий gitHub. Вы можете увидеть объявление массива параметров в ClientManager.class.php в строке 44, а Еогеасп() цикл для связывания параметров в DBOperation.class.php в строке 97. https://github.com/code-climber/car_rental/blob/preparedStmt/src/car_rental/model/dao/ClientManager.class.php
Я собираюсь с умом это.
Поскольку я не могу видеть остальную часть вашего кода, я предполагаю, что это дубликат этого: http://stackoverflow.com/questions/3307409/php-pass-by-reference-in-foreach. Если нет, что именно вы пытаетесь выполнить со ссылкой? – Mike
Почему бы просто не связать параметры с массивом в 'execute()'? Я нахожу, что это гораздо меньше хлопот лично. – Rasclatt
Майк, я не думаю, что это дубликат, потому что у меня есть только один цикл foreach(). То, что я пытаюсь сделать, просто. Мой массив параметров похож на «: login» => «Samy», и я хочу вставить «Samy», значение в мою таблицу, но пока это «: login», ключ, который вставлен. Rasclatt, вы можете привести пример, потому что на данный момент я всегда вижу, что люди привязывают параметры за пределами функции execute(). Я редактирую свой пост с ссылкой gitHub на этот код. –