В 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”.
Коротко и ясно. Спасибо!
Буквально пару дней назад хотел полностью описать класс wbdb.
Теперь даже не знаю стоит ли :)
Стоит конечно, это ведь краткое описание, подробное никогда не помешает.
Жуть какая…
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 --"
Да и сам класс какой то жуткий
Извините за возможно нубский вопрос, но всё же: для чего может понадобиться манипуляции с бд вообще? У меня, как рядового блогера, не возникало таких потребностей…
Вордпрес хорошая система, но как не крути для продвижения она не годится
А что вы посоветуете? джомала?
webkontrast, движок вордпресс используют только для создания сателлитов. Пора бы уже знать ;)