Получить атрибуты продукта 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

Также как мне напечатать каждый атрибут в другом поле?

Author: AnAnD, 2012-12-27

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>';
  }
}
}
?>

Попробуйте это

 0
Author: Adi, 2015-07-29 10:51:44

Если вы используете переменную в своем запросе, предпочтительнее использовать ее следующим образом: ГДЕ 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.

 0
Author: Gregory Kapustin, 2012-12-27 10:19:32