2013-01-13 4 views
0

У меня ошибка при попытке получить доступ к данным mysql, используя несколько предложений WHERE в подготовленном состоянии. Это код, который генерирует исключение SQL (индекс параметра из диапазона (2> числа параметров, что 1);Ошибка, используя несколько ГДЕ в mysql

"SELECT Arrived_time, Closed_time FROM ? 
WHERE (\"Year = ?\n) AND (\"Month = ?\n) AND (\"Day = ?)" 

, и я вошел в три параметры при Есть ли лучший способ

+7

Я был бы удивлен, если вы разрешили использовать параметр для имени таблицы - и почему у вас котировки на начало «Год», «Месяц» и «День»? –

+0

Я ввел четыре пареметра, а не три. – Cocest

+1

Это не отвечает на мой вопрос и не объясняет, почему вы пытаетесь использовать параметр для имени таблицы. –

ответ

1

Как уже упоминалось, вам необходимо указать ваше имя таблицы и использовать правильно процитировать:

"SELECT `Arrived_time`, `Closed_time` FROM TABLENAME 
WHERE (`Year` = ?) AND (`Month` = ?) AND (`Day` = ?)" 
+0

Спасибо, это работает. – Cocest

+0

Не забудьте отметить ответы, принятые, когда они работают! ;) – Ilion

0

.? У вас не хватает закрытия кавычек при именовании столбцов "Year", "Month" и "Day":

"SELECT Arrived_time, Closed_time FROM ? 
WHERE (\"Year\" = ?\n) AND (\"Month\" = ?\n) AND (\"Day\" = ?)" 

в вашей версии, база данных будет искать колонку под названием что-то вроде "Year = ?\n) AND ("

+0

Котировки не являются допустимыми идентификаторами полей в mySQL, поэтому это все равно не удастся. Так будет '?' Где имя таблицы должно быть –

+0

Это была типографская ошибка. – Cocest

+0

Вместо этого я использую имя таблицы, пареметр. – Cocest

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