Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » MySQL » Составление sql запроса

Составление sql запроса


     05.04.2014    Все вопросы » MySQL    3915

вопрос
В общем есть у меня один граббер, но вот после обновления на новую версию двига он перестал работать. Выяснилось что проблема заключается в том что часть полей переехали в отдельную таблицу (_post_extras). Вроди как и не особая проблема создать отдельный запрос для них, но вот дело в том что граббер написан с использованием ООП и как я не пытался это сделать - вылазили одни ошибки.
Вот вся функция
Что я делал:
После
 $SQL = 'INSERT INTO '.PREFIX.'_post ('.implode(', ', array_keys($insert)).') VALUES (\''.implode('\', \'', array_values($insert)).'\')';

добавлял
    $row = $db->insert_id();
     $SQL = 'INSERT INTO ' . PREFIX . '_post_extras (news_id, allow_rate, news_read, rating, vote_num, votes) VALUES("'.$row.'",1,0,0,0,0)';

в итоге получил ошибки
Notice: Undefined variable: db on line 284

Fatal error: Call to a member function insert_id() on a non-object on line 284

В гугл прошу не направлять, я понял что одна переменная не определена, а функция не является обектом, но как это исправить не знаю. Или обясните как передать в переменную айди текущей новости в данной ситуации.

Ответа пока нет


10 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 5 апреля 2014 00:30 -

попробуй
$this->db

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

shadow6630
Юзер

shadow6630 - 5 апреля 2014 00:37 -

раньше уже пробовал вариант
$row = $this->$db->insert_id();

ошибки
Notice: Undefined variable: db on line 284

Fatal error: Cannot access empty property on line 284

dj-avtosh
PHP-developer

dj-avtosh - 5 апреля 2014 01:09 -

покажи весь класс

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

shadow6630
Юзер

shadow6630 - 5 апреля 2014 01:42 -

вот весь класс http://pastebin.com/fBktjsym

dj-avtosh
PHP-developer

dj-avtosh - 5 апреля 2014 10:56 -

Логично - тут работа со своей какой-то базой.$this->db &= $db; а в конструктор __construct ( $db ) посылать $db сам коннект. Либо использовать global $db;

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

shadow6630
Юзер

shadow6630 - 5 апреля 2014 13:06 -

Пробовал так
    global $db;
    $row = $db->insert_id();
     $SQL = 'INSERT INTO ' . PREFIX . '_post_extras (news_id, allow_rate, news_read, rating, vote_num, votes) VALUES("'.$row.'",1,0,0,0,0)';

на выходе
Warning: mysqli_insert_id() expects parameter 1 to be mysqli, boolean given in

shadow6630
Юзер

shadow6630 - 5 апреля 2014 13:14 -

Я уже окончательно запутался с этим ООП, подскажите более конкретно (что и куда нужно вставить), а то я уже пол дня сижу над ним.

dj-avtosh
PHP-developer

dj-avtosh - 5 апреля 2014 13:28 -

А есть ли инсерт над получением последнего id,если нет то: select max(id) и т.п.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 5 апреля 2014 13:32 -

Ну и у query надо бы $db->query, а не $this-->db->query, если решили global юзать.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

shadow6630
Юзер

shadow6630 - 6 апреля 2014 17:49 -

Огромное спасибо dj-avtosh за решение данного вопроса + ко всему он поправил работоспособность еще одного моего модуля!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

наверх