[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Переход на с mysql на mysqli
Shuriken
Доброго времени суток!

Перевожу сайт с mysql на mysqli.

Есть такая конструкция:
 function 
{
$res = $mysqli->query ('<текст запроса>');
}


При выполнении получается ошибка Call to a member function query() on a non-object

Функция и запрос рабочие, т.к. работал на mysql. Я просто заменил mysql_query на $mysqli->query.

В чём может быть причина?
McLotos
в mysqli немного другая логика =)
почитайте http://php.net/manual/ru/mysqli.query.php

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Shuriken
McLotos
Прочитал, но так и не понял в чём подвох.
McLotos
Shuriken
=)
покажи какой запрос ты хочешь выполнить

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Shuriken
McLotos
$res = $mysqli->query ('select b.name, b.link, b.image, DATE_ADD(b.date, INTERVAL '.$GLOBALS['offset'].' hour) as date, m.isfinish
from `'
.$GLOBALS['db_prefix'].'broadcast` b
left join `'
.$GLOBALS['db_prefix'].'match` m on m.id = b.match_id
'
.$where.'
order by b.date
'
.$limit);
Bolik
mysqli_query ('запрос') может так заработает? подозреваю, что просто неправильно вызвана функция.
Shuriken
Цитата (Bolik @ 25.07.2014 - 15:45)
mysqli_query ('запрос') может так заработает? подозреваю, что просто неправильно вызвана функция.

Так точно не заработает, т.к. надо писать mysqli_query($link, 'запрос'). Я использую объектно-ориентированный стиль
Bolik
посмотри везде ли ты используешь объектно-ориентированный стиль?

http://stackoverflow.com/questions/1743549...on-a-non-object см. здесь
vital
Цитата
INTERVAL '.$GLOBALS['offset'].

SQL Injection попахивает

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
Shuriken
Цитата (vital @ 25.07.2014 - 17:46)
Цитата
INTERVAL '.$GLOBALS['offset'].

SQL Injection попахивает

Действительно. Спасибо, исправил.
Shuriken
Вопрос ещё актуален
Shuriken
Короче, всё оказалось банально просто: функция не видела объект mysqli, добавил
global $mysqli;
работает
twin
Офигеть... Юзать объектный вариант и тут же global.
Тут надо либо крестик снять, либо трусы одеть.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Shuriken
Цитата (twin @ 29.07.2014 - 10:25)
Офигеть... Юзать объектный вариант и тут же global.
Тут надо либо крестик снять, либо трусы одеть.

а как надо?
twin
Ну я же написал - либо крестик...

Ничего страшного нет в global, это сейчас адепты прибегут и начнут кричать, что global - зло. Они просто немножко слабы в коленках.

Но и использовать его, если юзаешь ООП стиль - как то пистопротивно. Тут нужно выбирать.

проблема как раз в заголовке:
Цитата
Переход на с mysql на mysqli
Не нужно никуда переходить. Ну или переходить на рассово верный процедурный стиль. Тут посмотри.

А вот если начинаешь все заново, то выбирай. И тогда таких вопросов не возникнет. Там много способов. Синглетон, наследование расширение и так далее. Но не стоит всё мешать в кучу. Порвут на колбасу.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.