Как заэкранировать запрос к mysql? Не пропускает запрос со знаком тире

Рейтинг: 2Ответов: 1Опубликовано: 01.10.2014

Есть код:

DBConnect();
$carBrand = $_GET['marka']; // в $carBrand лежит - alfa-romeo
$query = 'SELECT
            DISTINCT `model_eng`,
            `url_model`,
            `marka_eng`,
            `url_marka`
          FROM '.$carBrand.'
          WHERE `url_marka`="'.$carBrand.'";';
$result = mysql_query($query);
$onebrand = mysql_fetch_row($result);

И в ответ получаю такой варнинг:

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test.ru\models.php on line 104

Если добавляю вывод ошибки mysql - die(mysql_error());, то получаю вот такую ошибку:

SELECT DISTINCT model_eng,url_model,marka_eng,url_marka FROM alfa-romeo WHERE url_marka="alfa-romeo"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-romeo WHERE url_marka="alfa-romeo"' at line 1

То есть ругается на знак тире. А как ее заэкранировать-то? Я понимаю, что нужно использовать вот такие кавычки ``, но alfa-romeo находится в переменной. Никак не получается заэкранировать.

Ответы

▲ 4

Ответ из комментариев

В обратные кавычки поставьте и название таблицы, т.е. вместо

... FROM '.$carBrand.' WHERE ...

запишите

... FROM `'.$carBrand.'` WHERE ...

Вообще, не очень удачное решение использовать в названии таблиц тире/дефис/минус. Вы же не назовёте таблицу "a+b"? В запросе MySQL будет рассматривать это как арифметическую операцию.