Всем привет Хочу получить данные из базы данных но никак не пойму как это сделать Код (PHP): // Get a db connection. $db = JFactory::getDbo(); // Create a new query object. $query = $db->getQuery(true); $query->select('name'); $query->from('q8abm_users'); $query->where('username = Podopitniy'); // Reset the query using our newly populated query object. $db->getQuery($query); // Load the results as a list of stdClass objects. $results = $db->loadResult(); print_r($results); на вывод получаю вот это - "1" и это вовсе не имя юзера
вместо: напиши Код (PHP): $query->where('username = \'Podopitniy\''); не забывай про экранирование и не обязательно писать префикс таблиц q8abm, попробуй напиши так: Код (PHP): $query->from('#__users'); БД движок сам подставит чего и куда ему надо
Код (PHP): $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select('name'); $query->from('#__users'); $query->where('username=\'Podopitniy\''); $db->getQuery($query); $results = $db->loadResult(); print_r($results); всёравно на вывод получаю = "1" даже если в WHERE поставить id или любое другое значение, всёравно "1"
в общем не получается никак с БД работать и нормальными методами php она режет фигня какая-то данные о пользователе получилось вот так вытянуть Код (PHP): $getuser =JFactory::getUser (); $user = $getuser->user; теперь нужно как-то туда записать
я так понимаю что ты пытаешься создать запрос к БД при помощи встроенных функций по работе с БД из Joomla 3.x если всё таки хочешь использовать эти функции то получше поройся в структуре класса по работе с БД т.к. мне сдаётся что у тебя вообще есть лишние части и используются не нужные функции $db->getQuery(true);, что за TRUE ? и вообще getquery это для получения уже отправленного запроса или ещё не отправленного, т.е. ты можешь получить из класса введённый в него запрос, который был/небыл обработан раньше делалость так: 1. создание экземпляра класса ($db = JFactory::getDbo();) 2. написание самого запроса ($query='select name from #__users where username=\'Podopitniy\'';) 3. передача запроса экземпляру класса ($db->setQuery($query);) 4. обработка ($db->Query();) 5. получение результата ($results = $db->loadResult();) возможно что в третей версии это всё изменилось, почитай документацию на Joomla.org, станет более понятно а если работать через экземпляр USER, то у него есть ещё и функция setUser
а тогда почему у тебя фот это пропущено? вот тебе и выдаётся результат -1 смотри полный скрипт: Код (PHP): // Get a db connection. $db = JFactory::getDbo(); // Create a new query object. $query = $db->getQuery(true); // Select all records from the user profile table where key begins with "custom.". // Order it by the ordering field. $query->select(array('user_id', 'profile_key', 'profile_value', 'ordering')); $query->from('#__user_profiles'); $query->where('profile_key LIKE \'custom.%\''); $query->order('ordering ASC'); // Reset the query using our newly populated query object. $db->setQuery($query); // Load the results as a list of stdClass objects. $results = $db->loadObjectList(); внимательно, внимательность и ещё раз ВНИМАТЕЛЬНОСТЬ ))))))))
и точно! но по идее как то set выбрать get получить, ну да ладно сейчас запись в БД остаётся сделать точнее обновить, но в мануале нет инфы об этом
собсно обновление не сильно отличается Код (PHP): $query = $db->getQuery(true); $query->update('#__users'); $query->set('name = \'i cool!\''); $query->where('username=\'Podopitniy\''); $db->setQuery($query); $results = $db->loadResult(); print_r($results); опытным путём вывел, в базу добавляет норм, но проблема в выпадающих ошибках Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in Zhome\site.ru\www\libraries\joomla\database\driver\mysqli.php on line 662 Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, boolean given in Zhome\site.ru\www\libraries\joomla\database\driver\mysqli.php on line 705 нашёл эти файлы и вот эти строки соответственно: Код (PHP): return mysqli_fetch_row($cursor ? $cursor : $this->cursor); mysqli_free_result($cursor ? $cursor : $this->cursor); или просто ошибки заглушить?
новая проблема, а как в поле вставить переменную??? вместо Код (PHP): $query->where('username = \'Podopitniy\''); нужно Код (PHP): $query->where('username = $user'); но так не работает в $user данные попадают так Код (PHP): $getuser = JFactory::getUser(); ну и что бы модифицировать под запрос я сделал так Код (PHP): $user = $getuser->name; echo $user; $user = "\'".$user."\'"; echo $user; на экран выводит с кавычками и слэшем зн. и сюда where('username = $user') должен встать нормально
так же как ты склеиваешь строки Код (PHP): $query->where('username = \''.$user.'\''); а вообще то у класса по работе с БД должна быть функция Escape, вроде как она производит экранмрование Код (PHP): $query->where(escape('username = '.$user)); вот только я не знаю откуда она вызывается скорее всего Код (PHP): $query->where($query->escape('username = '.$user)); в данном случае будет
и точно сработало Код (PHP): $query->where('username = \''.$user.'\''); я уже всякоразно испробовал но не так ))) но вот чё-то я ничего не понял зачем столько кавычек? вообще запутался что какие открывают и почему нет конфликта