Задать вопрос
@SergeTkach
OpenCart Forever

Как подставить переменную MySQL в запрос?

Хочу в OpenCart получить список только тех товаров, у которых не прописан URL.
Напомню, что в таблице oc_url_alias URL хранится в виде значения столбца keyword
И при этом его принадлежность к продукту определяется через столбец query вида "product_id=20"
56c2e24cbc2b49ee8fdfecc58f78e2c1.png

Собственно из-за такой особенности query пришло на ум использовать для запроса переменную:

SELECT (@ID:= product_id), 
(SELECT `keyword`
FROM `oc_url_alias`
WHERE `query` = 'product_id=(@ID)'
) AS `url`
FROM `oc_product`


Но это не дает результатов. Keyword получается NULL.

Вообще из того, что я вижу при запросах к урлам, сначала запрашивают определенное кол-во товаров, потом в цикле запрашивают УРЛ каждого товара по отдельности:
$query = "SELECT keyword FROM	". DB_PREFIX ."url_alias WHERE `query`='product_id=".$item['product_id']."'";

Но в таком случае в магазине на 100 000 товаров, необходимо сделать 100 000 запросов.
А хотелось бы, чтобы можно было сделать 1 запрос и получить список только тех товаров, где ЧПУ не задан.

Какие варианты сделать так, чтобы получить список товаров без ЧПУ одним запросом? ))

-----------------------------
Как только задал этот вопрос пришло на ум запросить все ЧПУ всех продуктов:
SELECT * FROM `oc_url_alias` WHERE `query` LIKE 'product_id=%';

Затем средствами php превратить данные столбца query в массив товаров с заполненными ЧПУ.
Затем получить массив с id всех товаров. Из этого массива удалить все товары у которых ЧПУ в порядке.
То есть, на выходе у меня будет список id товаров, у которых нет ЧПУ. Собственно это то, что я пытаюсь получить в итоге.
  • Вопрос задан
  • 299 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@TMLEX
Так а ты сразу в php передавай переменную, определил ее, и пишешь, например, "SELECT * FROM TABLE WHERE USER_ID='".$Var."'"
Выполняешь запрос, получаешь результат в виде массива, с помощью mysqli_fetch_array
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы