Получение исключения PDO 42000 по запросу PDO SQL - PullRequest
0 голосов
/ 14 февраля 2020

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

$stmt2 = $conn->prepare('SELECT a.[zone], b.[source_external_subscriber_id], SUM(b.[source_customer_cost]) AS [total]
    FROM billing_zones a INNER JOIN cdr b 
    ON a.[id] = b.[source_customer_billing_zone_id] 
    WHERE destination_account_id = :destinationId 
    GROUP BY b.[source_external_subscriber_id], a.[zone]');
$stmt2->execute(array('destinationId' => $destinationId));

Получаемое сообщение:

Необработанное исключение PDO: SQLSTATE [42000]: ошибка синтаксиса или нарушение доступа: 1064 У вас есть ошибка в вашем SQL синтаксисе; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с '[zone], b. [source_external_subscriber_id], SUM (b. [source_customer_cost] AS [tota' в строке 1 в /home/integracion.php: 14

1 Ответ

3 голосов
/ 14 февраля 2020

Квадратные скобки ([...]) предназначены для Microsoft SQL Server, а не для MySQL / MariaDB. Вместо них нужно использовать обратные кавычки

--       v----v------- check this
SELECT a.`zone` ...

Обратите внимание, что вы также можете использовать двойные кавычки, если включите SQL_MODE=ANSI_QUOTE. Двойные кавычки соответствуют стандарту SQL -92 и должны быть совместимы с любой СУБД

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...