public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
Я также новичок в Android, поэтому я могу ошибаться. Но согласно моему пониманию, используя это для создания списка, второй аргумент - это расположение элементов списка. Макет состоит из множества видов (вид изображения, текстовое представление и т. Д.). С третьим аргументом вы указываете, в каком представлении или текстовом режиме вы хотите, чтобы текст отображался.
PDO :: prepare заявляет, что «вы не можете использовать маркер именованного параметра с тем же именем дважды в подготовленном заявлении», поэтому я предполагаю, что это не так.
Помимо повторного использования, основная проблема здесь заключается в том, что вы пытаетесь динамически изменять имена col.
Этот ответ отправлен анонимным пользователем в http://php.net/manual/en/pdo.prepare.php :
Тем, кто задается вопросом, почему добавление котировок вокруг заполнителя неверно и почему вы не можете использовать заполнители для имен таблиц или столбцов:
Существует распространенное заблуждение о том, как работают заполнители в подготовленных операциях: они не просто заменяемые в (экранированные) строки, и полученный SQL-код выполняется. Вместо этого СУБД, попросившая «подготовить» заявление, содержит полный план запросов о том, как он будет выполнять этот запрос, включая те таблицы и индексы, которые он будет использовать, которые будут одинаковыми независимо от того, как вы заполняете заполнители.
План «SELECT name FROM my_table WHERE id =: value» будет таким же, как вы заменяете «: значение», но похожее «SELECT name FROM: table WHERE id =: value» не может планировать, потому что СУБД не знает, какую таблицу вы собираетесь выбрать.
Даже при использовании «эмулированных подготавливаний» PDO не может позволить вам использовать местозаполнители где угодно, потому что ему придется работать что вы имели в виду: «Выберите: foo From some_table» означает «: foo» будет ссылкой на столбец или литеральной строкой?
blockquote>Когда ваш запрос использует ссылку динамической колонки , вы должны быть явно белыми - перечисление столбцов, которые, как вы знаете, существуют в таблице, например используя оператор switch с исключением, созданным в предложении по умолчанию:
Вы можете установить PDO::ATTR_EMULATE_PREPARES = true
.
Например. $connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
.
Если вы используете Laravel, вы можете установить это в массиве options
в config/database.php
. например PDO::ATTR_EMULATE_PREPARES => true
PDO::ATTR_EMULATE_PREPARES
являетсяtrue
, PDO DOES i> поддерживает повторное использование именованных параметров маркеров. – Mike 12 February 2014 в 09:02SELECT :Param
невозможно, поскольку вы не можете привязывать таблицы / столбцы. Проверьте stackoverflow.com/q/182287 – Funk Forty Niner 13 December 2014 в 18:56