Работа с базой MySQL из WebAsyst SS

Тема в разделе "WebAsyst", создана пользователем Aleeex, 10 июн 2014.

Модераторы: mdss
  1. Aleeex

    Aleeex Создатель

    Регистр.:
    5 июн 2014
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте!

    Не могу разобраться как работать с базой SQL из своего плагина, помогите пожалуйста.

    Нужно ли подключаться к БД WebAsyst, если я работаю с его таблицей?
    И как правильно отправлять запрос?
     
  2. kadurinho

    kadurinho

    Регистр.:
    21 июн 2011
    Сообщения:
    602
    Симпатии:
    242
    конкретнее задачу опишите, на вскидку разные плагины могут быть
     
  3. Aleeex

    Aleeex Создатель

    Регистр.:
    5 июн 2014
    Сообщения:
    5
    Симпатии:
    0
    В плагине пытаюсь вывести все записи из таблицы rec:

    PHP:
    $result_ad $this->query("SELECT * from rec");

    while(
    $rowzak=mysql_fetch_array($result_ad)) {
    echo 
    $rowzak['id'];
    }
    Результат - пустая страница.

    Мне нужно просто получить результат запроса в массив, из таблицы "rec" базы WebAsyst, плагин расположил в папке kernel\includes\smarty\plugins, с именем function.my.php:

    PHP:
    <?php
    function smarty_function_my(){

    $result_ad $this->query("SELECT * from rec");

    while(
    $rowzak=mysql_fetch_array($result_ad)) {
    echo 
    $rowzak['id'];
    }

    }
    ?>
     
    Последнее редактирование: 10 июн 2014
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.244
    mysql_fetch_array во фреймворках не используют напрямую. Там есть свои функции, свой api для работы с бд - http://www.webasyst.ru/developers/docs/mvc/model/

    В частности, для твоего примера, скорее всего, надо написать так:
    PHP:
    $result_ad $this->query("SELECT * from rec");
    //$result_ad = $result_ad->fetchAll(); #возможно, что эту строчку надо раскомментировать
    // Проходим по всем записям результата в цикле:
    foreach ($result_ad as $row) {
        echo 
    $row['id'];
    }
     
  5. Aleeex

    Aleeex Создатель

    Регистр.:
    5 июн 2014
    Сообщения:
    5
    Симпатии:
    0
    К сожалению на WebAsyst 309 не работает. Это код не для WA 5 ?
     
  6. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.244
    Не проверял у меня WebAsyst даже не установлен :)

    Делай тогда
    PHP:
    var_dump($result_ad);
    и смотри что там лежит и какого типа
     
  7. Aleeex

    Aleeex Создатель

    Регистр.:
    5 июн 2014
    Сообщения:
    5
    Симпатии:
    0
    Ничего не лежит, он пустой.

    Получил сообщение об ошибке Using $this when not in object context.

    Удалось выполнить подключение и увидел, что var_dump ($row) -> string(21) "SELECT * from rec" т.е. просто строка.
     
    Последнее редактирование модератором: 10 июн 2014
  8. Voshal

    Voshal Мизантроп

    Регистр.:
    30 мар 2009
    Сообщения:
    286
    Симпатии:
    108
    Вашу задачу можно выполнить несколькими методами.
    Вот один из них
    PHP:
    $query db_query("SELECT * FROM `rec`");
    if (
    $query){
      while (
    $result db_fetch_assoc($query)){
        echo 
    $result['id'];
      }
    }