Получить атрибуты продукта UC с помощью представлений Глобального PHP
Я попытался использовать приведенный ниже код в Представлениях > Глобальное поле PHP.
<?php
$request = db_query("SELECT data FROM {uc_order_products } WHERE order_id= $row->order_id")->fetchField();
$att = $request;
$data = unserialize($att);
if (is_array($data['attributes'])) {
foreach ($data['attributes'] as $attribute => $option) {
echo $attribute . ': ' . implode(', ', (array)$option) . '<br>';
}
}
?>
Добавив приведенный выше код, я получаю следующую ошибку:
SQLSTATE[42000]: Синтаксическая ошибка или нарушение доступа: 1064 У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на наличие правильного синтаксиса для использования рядом "в строке 1
Также как мне напечатать каждый атрибут в другом поле?
2 answers
<?php
$request = db_query("SELECT data FROM {uc_order_products } WHERE order_id= $row->order_id");
foreach($request as $rwq){
$att = $rwq;
$data = unserialize($att);
if (is_array($data['attributes'])) {
foreach ($data['attributes'] as $attribute => $option) {
echo $attribute . ': ' . implode(', ', (array)$option) . '<br>';
}
}
}
?>
Попробуйте это
Если вы используете переменную в своем запросе, предпочтительнее использовать ее следующим образом: ГДЕ o.order_id = :oid', массив(':oid'=>$строка->order_id).
Так что, я думаю, это будет:
$request = db_query('SELECT o.data FROM {uc_order_products} o WHERE o.order_id= :oid', array(':oid' => $row->order_id)')->fetchField();
Чтобы иметь разные поля, вы можете выполнить этот процесс для каждого поля, используя несколько полей PHP в вашем представлении. Но чтобы рационализировать запросы, я бы сначала сделал этот запрос в "установочный код" и установил все ваши данные в переменной $static.