Очередной блог фрилансера

коротко и полезно о веб-разработке

Menu
  • О чем это все
Menu

WordPress. Функции базы данных

07.12.201023.11.2011

В wordpress существует достаточно обширный класс, предоставляющий набор методов для эффективной работы с базой данных. Вы можете найти описание этого класса а также всех его методов в файле /wp-includes/wp-db.php. В сегодняшней статье будут рассмотрены наиболее важные из этих методов, и небольшие примеры их использования. Важно умение использовать возможности класса $wpdb, для безопасной работы плагинов.

В статье будут приведены примеры использования следующих шести методов:

  • insert($table, $data, $format) – вставляет строку в таблицу через массивы.
  • update($table, $data, $where, $format, $where_format) – обновляет строку в таблице через массивы.
  • get_var($query, $x, $y) – получает одиночную переменную из базы данных.
  • query($query) — выполняет MySQL-запрос к базе данных, с текущим подключением.
  • get_results($query, $output) – получает данные SQL-запроса из базы данных (одну или множество строк).
  • escape($data) – Экранирует контент для вставки в базу данных, используя метод addslashes() для безопасности.

Кроме этого, есть еще несколько интересных методов:

  • set_prefix($prefix) – используется для установления префикса wordpress-таблиц, также может быть использован для переопределения префикса в любое время.
  • prepare($query) – безопасно подготавливает SQL-запрос к выполнению, с помощью sprint()-подобного синтаксиса.
  • get_row($query, $output, $y) – получает одиночную запись из базы данных.
  • get_col($query, $x) – получает одиночную колонку из базы данных в формате массива.
/**
 * insert
 */
$wpdb->insert( $wpdb->posts, array( 'post_title' => $mytitle ) );
 
$wpdb->insert( $wpdb->options, array(
            'option_name',
            'new_option_key',
            'option_value' => 'New Option Value',
            'autoload' => 'yes' )
            );
 
/**
 * update
 */
$wpdb->update( $wpdb->posts, array( 'post_title' => $mytitle ),
            array( 'ID' => $myid )
            );
 
$wpdb->update( $wpdb->options,
            array( 'option_value' => 'New Option Value' ),
            array( 'option_name' => 'new_option_value' )
            );
 
/**
 * get_var
 */
$post_id = $wpdb->get_var(
            $wpdb->prepare( "SELECT post_id FROM
                    $wpdb->postmeta WHERE
                    post_id = %d AND
                    meta_key = 'enclosure' AND
                    meta_value LIKE (%s)", $post_ID, $url . '&' )
            );
 
$content = $wpdb->get_var(
            $wpdb->prepare("SELECT post_content FROM " .
                    "$wpdb->posts WHERE " .
                    "post_title = %s AND " .
                    "ID = %d", $title, $id )
        );
 
/**
 * query
 */
$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name = '$name'" );
 
$wpdb->query( "UPDATE $wpdb->posts SET post_title = '$mytitle' WHERE ID = $myid" );
 
/**
 * query and escape
 */
$mytitle = $wpdb->escape( $mytitle );
$myid    = absint( $myid );
$wpdb->query( "UPDATE $wpdb->posts SET post_title = '$mytitle' WHERE ID = $myid" );
 
/**
 * get_results
 */
$type = $wpdb->get_results( "SELECT post_type FROM " .
                "$wpdb->posts WHERE ID=$id" );

Перевод статьи “WordPress Database Functions”.

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

  1. Уведомление: Tweets that mention WordPress. Функции базы данных | Очередной блог фрилансера -- Topsy.com
  2. Kama:
    07.12.2010 в 19:25

    Коротко и ясно. Спасибо!
    Буквально пару дней назад хотел полностью описать класс wbdb.
    Теперь даже не знаю стоит ли :)

    Ответить
    1. dreamhelg:
      07.12.2010 в 19:28

      Стоит конечно, это ведь краткое описание, подробное никогда не помешает.

      Ответить
  3. Сергей:
    07.12.2010 в 23:01

    Жуть какая…
    eta_value LIKE (%s)", $post_ID, $url . '&' Первый раз вижу чтоб так LIKE записывали. По идее что то вроде LIKE '%s' $url.'%'

    query( "DELETE FROM $wpdb->options WHERE option_name = '$name'" ) зачем так делать если есть prepare? А то сделают $name="' OR 1=1 --"

    Да и сам класс какой то жуткий

    Ответить
  4. GreenRayman:
    27.12.2010 в 21:20

    Извините за возможно нубский вопрос, но всё же: для чего может понадобиться манипуляции с бд вообще? У меня, как рядового блогера, не возникало таких потребностей…

    Ответить
  5. webkontrast:
    17.03.2011 в 09:53

    Вордпрес хорошая система, но как не крути для продвижения она не годится

    Ответить
    1. Иннер Дизайн:
      18.08.2011 в 18:25

      А что вы посоветуете? джомала?

      Ответить
  6. Артем:
    14.06.2011 в 14:26

    webkontrast, движок вордпресс используют только для создания сателлитов. Пора бы уже знать ;)

    Ответить

Добавить комментарий Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Об авторе

avatar

Ольга Фомина

Senior Frontend Developer
Почтовые технологии
telegram youtube instagram vkontakte

Рубрики

  • angular
  • JavaScript
  • nodejs
  • svg
  • wordpress
  • верстка
  • изучаем Jquery
  • общая
  • переводы
  • плагины Jquery
  • юнит-тесты
© 2023 Очередной блог фрилансера | Powered by Superbs Personal Blog theme