У меня есть две таблицы MYSQL: «продукт» и «url_alias».
Присоединиться к двум столбцам MYSQL в PHP
+------------+--------+
| product |
+------------+--------+
| product_id | status |
+------------+--------+
| 1 | 1 |
| 2 | 0 |
| 3 | 1 |
+------------+--------+
+------------+------------+
| url_alias |
+--------------+----------+
| query | keyword |
+--------------+----------+
| product_id=1 | keyword1 |
| product_id=2 | keyword2 |
| product_id=3 | keyword3 |
+--------------+----------+
Я пишу PHP-код для извлечения ключевых слов из колонки url_alias стола, но только для product_id, что имеет соответствующий статус = 1 в продукте таблицы. Я полагал, что это будет связано с объединением двух столбцов и одновременным использованием фильтра.
$sql = "
SELECT p.product_id
, ua.keyword
FROM `".$this->tables["product"]."` p
WHERE p.status = 1
LEFT
JOIN `".$this->tables["url_alias"]."` ua
ON ua.query = CONCAT('product_id=',p.product_id) ";
До сих пор я получаю:
Error: You have an error in your SQL syntax;
Может кто-нибудь помочь мне понять это?
Это плохо пахнет. если 'query' column always =' product_id = {id} ', тогда сделайте его int и удалите часть' product_id = '. Если столбец содержит более разнообразные данные '{string} {id}', то разбить на два столбца 'querystring' и' queryid' – Steve
Удивительно, что это все, что говорится в сообщении об ошибке. Вы должны использовать очень специальную версию mysql. – Strawberry
Дружественный совет: когда вы сталкиваетесь с синтаксическими ошибками SQL, сначала запустите запросы в консоли БД, если у вас есть к нему доступ (Командная строка, phpmyadmin и т. Д.). Когда вы получите желаемый результат, начните преобразовывать его в дружественную php строку. – harris