1

Topic: Как делать SQL запросы на форуме PunBB

Запросы на примере подключения к SQL

Как создать новую таблицу в базе данных punbb

Как проверить таблицу на существование перед добавлением новой таблицы в PunBB
Если вы пишите свое расширение, то возможно вам потребуется создать таблицу. Всегда проверяйте таблицу на существование перед добавлением. В PunBB для этого существует специальная функция table_exists

Проверяем так:

if (!$forum_db->table_exists('my_table')) 
{
      $schema = array(
        'FIELDS'  =>  array(
          'ip'  =>  array(
            'datatype'  => 'INT(10) UNSIGNED',
            'allow_null'  => false,
            'default'  =>  '0',
          ),
          'added'  =>  array(
            'datatype'    => 'INT(10) UNSIGNED',
            'allow_null'  => false,
            'default'    => '0',
          ),
        ),
        'PRIMARY KEY'  =>  array('ip')
      );
    $forum_db->create_table('my_table', $schema);
}

2

Re: Как делать SQL запросы на форуме PunBB

На примере таблицы users попробуем добавить в нее новое поле new_field
Будем использовать поле для опций с исходным значением 0.

Проверяем поле на существование функцией field_exists('users', 'new_field'):

if (!$forum_db->field_exists('users', 'new_field') )
{
    $forum_db->add_field('users', 'new_field', 'INT(10) UNSIGNED', false, 0);
}

3

Re: Как делать SQL запросы на форуме PunBB

if ($forum_db->table_exists('pan_stat_visits'))
   $forum_db->drop_table('pan_stat_visits');

Как удалить поле из таблицы

if ($forum_db->field_exists('online', 'bots'))
   $forum_db->drop_field('online', 'bots');

4

Re: Как делать SQL запросы на форуме PunBB

Добавляем опцию

forum_config_add('o_pan_my_option', '1');

Удаляем опции, если их несколько

forum_config_remove(array(
   'o_pan_my_option_1',
   'o_pan_my_option_2',
   'o_pan_my_option_3',
));

5

Re: Как делать SQL запросы на форуме PunBB

Этот запрос выведет список всех тем в массиве

$query = array(
   'SELECT'   => 't.id, t.subject',
   'FROM'      => 'topics AS t',
//   'WHERE'      => 't.forum_id=5', //темы форума с ID 5
//   'ORDER BY'   => 't.num_views DESC', //сортировка по просмотрам, по убыванию
//   'LIMIT'      => '7, 10',  //покажет 10 записей с 7 и далее
);
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
$topics = array();
while ($row = $forum_db->fetch_assoc($result)) {
   $topics[$row['id']] = $row['subject'];
}

echo '<pre>';
print_r($topics);
echo '</pre>';