2015-09-29 2 views
-1

Я думаю, что я прочитал много тем по этому вопросу, но все равно получаю неправильный результат. У меня есть массив параметров запроса, который я хочу связать с 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

Я собираюсь с умом это.

+0

Поскольку я не могу видеть остальную часть вашего кода, я предполагаю, что это дубликат этого: http://stackoverflow.com/questions/3307409/php-pass-by-reference-in-foreach. Если нет, что именно вы пытаетесь выполнить со ссылкой? – Mike

+0

Почему бы просто не связать параметры с массивом в 'execute()'? Я нахожу, что это гораздо меньше хлопот лично. – Rasclatt

+0

Майк, я не думаю, что это дубликат, потому что у меня есть только один цикл foreach(). То, что я пытаюсь сделать, просто. Мой массив параметров похож на «: login» => «Samy», и я хочу вставить «Samy», значение в мою таблицу, но пока это «: login», ключ, который вставлен. Rasclatt, вы можете привести пример, потому что на данный момент я всегда вижу, что люди привязывают параметры за пределами функции execute(). Я редактирую свой пост с ссылкой gitHub на этот код. –

ответ

0

Хорошо, я наконец нашел, что не так. Это был мой SQL-запрос. Я поставил некоторые кавычки вокруг каждого параметра VALUES. Поскольку у меня не было сообщения об ошибке, я сосредоточился только на том, что было для меня новичком, петля над bindParam().

Я нахожу модератора немного серьезным о ясности моего вопроса, потому что я действительно читаю все, что могу, по ссылке ... Это не дубликат. Ошибка была в другом месте.

Смежные вопросы