Вы здесь

Нужна помощь для восстановоления работоспособности модуля

0

При неизвестных мне причинах, перестал работать модуль.
То есть в админке все хорошо, вносишь изменения они сохраняются в базе и так же отображаются в адмике. Но на сайте изменения не происходят.
Ошибка при сохранении в адмике:
«Warning: Invalid argument supplied for foreach() в функции auto_edit_complete_edit() (строка 1481 в файле /usr/local/www/site/site.ru/sites/all/modules/auto_model/auto_model.module).»

foreach($f['chek'] as $key=>$val)
            {
                    if($f['chek'][$key] == 'on')
                    {
                            db_query("INSERT INTO {auto_list_opt} SET id_komplek2='".$id_komplekt2."',id_opt='".$f['id'][$key]."', yes=1");
                    }
            }

Давай копать, что отвечает на вывод содержимого модуля на сайте, это php файл подгружаемый скриптом в шаблоне (персональный шаблон).

То есть, я так понимаю вывод производится в этим файлом php который выдает следующую ошибку:

«PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'order by 3 desc' at line 1: SELECT * FROM {auto_option} where id_model= order by 3 desc; Array ( ) в функции main() (строка 42 в файле /var/www/user/data/www/site.ru/comp_cost.php).»

Кусок кода

if (!empty($cache->data))
{
    $w = $cache->data;
}
else
{
$result =db_query("SELECT * FROM {auto_option} where id_model=".$id_model." order by 3 desc");
$result_cl =db_query("SELECT * FROM {auto_type_opt} order by 1");
$array_class=array();
foreach ($result_cl as $row)
{
        $array_class[$row->id][id]=$row->id;
        $array_class[$row->id][name]=$row->name;
}

Я новичек drupal

Версия Drupal: 
7.x
Категория: 
Block API
Вопрос задан 26.04.2016 - 09:53

Если раньше все работало, то может изменили версии PHP (для первой ошибки) и базы данных (для второй ошибки). Может ваш хостер обновил версии, если хостинг не ваш собственный.

Комментарий оставлен 26.04.2016 - 19:54

Ответы

0

Это ужас, такие запросы к БД делать не безопасно.
Ознакомьтесь https://www.drupal.org/node/310072
Пример правильного запроса:

  $result = db_query("SELECT * FROM {auto_option} where id_model = :id_model order by 3 desc", array(
    ':id_model' => $id_model,
  ));

А по поводу ошибки, похоже, что $id_model пустой.

if (!empty($id_model)) {
  $result = db_query("SELECT * FROM {auto_option} where id_model = :id_model order by 3 desc", array(
    ':id_model' => $id_model,
  ));
  $result_cl = db_query("SELECT * FROM {auto_type_opt} order by 1");
  $array_class = array();
  foreach ($result_cl as $row) {
    $array_class[$row->id][id] = $row->id;
    $array_class[$row->id][name] = $row->name;
  }
  // ...
}
  1. Возможно ваш сайт взломали, я бы рекомендовал провести комплексный аудит сайта.
  2. Соблюдай стандарты кодирования.
Ответ дан 27.04.2016 - 12:54