2016-08-01 2 views
0

У меня есть скрипт php pdo, где я хочу выбрать запись (из таблицы в базе данных MySQL) с наибольшим номером в поле «5». У меня также есть несколько других сужений, смотрите ниже:Исключение PHP: SQLSTATE [42000]: Ошибка синтаксиса или нарушение доступа: 1064

$stmt=$db->query("SELECT `field1`,`field2` FROM ".$tablename." WHERE 
`field3`!=".$variable1." AND `field3`!=".$variable2." AND 
`field4`='xx' AND `field5`<".$variable3." ORDER BY DESC `field5` LIMIT 
1"); 

У меня есть довольно много весь код внутри примерки заявление, и в заявлении уловов я использую

var_dump($ex->getMessage()); 

, чтобы получить сообщение об исключении из исключения $ ex.

Теперь, когда я выполняю код я получаю следующее сообщение об исключении:

«SQLSTATE [42000]: Ошибка синтаксиса или нарушение прав доступа: 1064 У вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса использовать вблизи «DESC field5 LIMIT 1» в строке 3' (длина = 232)

Я был бы признателен за любые советы о том, что может быть неправильно!

+0

О Боже, пожалуйста, использовать подготовленные заявления, если вы уже используете PDO ... – naththedeveloper

ответ

0

Изменить

ORDER BY DESC field5 

в

ORDER BY field5 DESC 
+0

Я чувствую себя так глупо в настоящее время. . Благодаря! – kinzai

0

Пожалуйста, обратитесь к MySQL manual для синтаксиса запроса на выборку. Вы сделали простую ошибку в том, что запрос был синтаксически неправильно. Вы можете заказать только столбец с помощью ссылки его на начальном этапе:

ORDER BY '{Column-Name}'

и только тогда вы можете определить, как его можно заказать либо в ASC или DESC.

ORDER BY '{Column-Name}' [ASC|DESC]

Таким образом, вы должны изменить запрос, как показано здесь:

$stmt=$db->query("SELECT `field1`,`field2` FROM ".$tablename." WHERE 
`field3`!=".$variable1." AND `field3`!=".$variable2." AND 
`field4`='xx' AND `field5`<".$variable3." ORDER BY `field5` DESC 
LIMIT 1"); 
Смежные вопросы