<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 431,  comments - 344,  trackbacks - 0
     

    Defining Database Parameters

    $db_url = 'mysql://username:password@localhost/databasename';

    NoteIf you are in a situation where you are writing a stand-alone PHP script or you have existing PHP code outside of Drupal that needs access to Drupal’s database, you will want to want to call include_once ('includes/bootstrap.inc') and then call drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE) to generate an active connection. At that point, you can use db_query(), as explained in the next section.

    Performing Simple Queries

    db_query('SELECT * FROM {joke} WHERE vid = %d', $node->vid);

    db_query("INSERT INTO {joke} (nid, vid, punchline) VALUES (%d, %d, '%s')",

    $node->nid, $node->vid, $node->punchline);

    db_query("UPDATE {joke} SET punchline = '%s' WHERE vid = %d", $node->punchline,

    $node->vid);

    db_query('DELETE FROM {joke} WHERE nid = %d', $node->nid);

    Retrieving Query Results

    There are various ways to retrieve query results depending on whether you need a single row or the whole result set, or you are planning to get a range of results for internal use or for display as a paged result set.

    1Getting a Single Value

    $sql = "SELECT COUNT(*) FROM {node} WHERE type = 'blog' AND status = 1";

    $total = db_result(db_query($sql));

    2Getting Multiple Rows

    $sql = "SELECT * FROM {node} WHERE type = 'blog' AND status = 1";

    $result = db_query(db_rewrite_sql($sql));

    while ($data = db_fetch_object($result)) {

           $node = node_load($data->nid);

           print node_view($node, TRUE);

    }

    The preceding code snippet will print out all published nodes that are of type blog. (The status field in the node table is 0 for unpublished nodes and 1 for published nodes.) We will cover db_rewrite_sql()shortly. The db_fetch_object()function grabs a row from the result set as an object. To retrieve the result as an array, use db_fetch_array(). The practice of retrieving rows as objects is common since most developers prefer its less verbose syntax.

    3Getting a Limited Range of Results

    $type = 'blog';

    $status = 1;

    $sql = "SELECT * FROM {node} n WHERE type = '%s' AND status = %d ORDER BY

    n.created DESC";

    $result = db_query_range(db_rewrite_sql($sql), $type, $status, 0, 10);

    4Getting Results for Paged Display

    $sql = "SELECT * FROM {node} n WHERE type = 'blog' AND status = 1 ORDER BY

    n.created DESC"

    $result = pager_query(db_rewrite_sql($sql), 0, 10);

    while ($data = db_fetch_object($result)) {

    $node = node_load($data->nid);

    print node_view($node, TRUE);

    }

    // Add links to remaining pages of results.

    print theme('pager', NULL, 10);

    Although pager_query() is not really part of the database abstraction layer, it is good to know when you need to create a paged result set with navigation. A call to theme('pager') at the end will display the navigation links to the other pages. You don’t need to pass the total number of results to theme('pager') because the number of results is remembered internally from the pager_query() call.

    5Deleting Tables on Uninstall

    The Administer ? Modules page has an Uninstall tab that not only allows modules to be disabled,but also removes their data from the database. If you want to enable the deletion of your module’s tables on this page, implement the uninstall hook in your module’s .install file. You might want to delete any variables you’ve defined at the same time.

    function annotate_uninstall() {

    db_query("DROP TABLE {annotations}");

    variable_del('annotate_nodetypes');

    }

    6Writing Your Own Database Abstraction Layer

    First, we make a copy of includes/database.mysql.inc and rename it as

    includes/database.dnabase.inc. Then we change the logic inside each wrapper function to map to DNAbase’s functionality instead of MySQL’s functionality. When all is said and done, we have the following functions declared in our file:

    _db_query($query, $debug = 0)

    db_affected_rows()

    db_connect($url)

    db_decode_blob($data)

    db_distinct_field($table, $field, $query)

    db_encode_blob($data)

    db_error()

    db_escape_string($text)

    db_fetch_array($result)

    db_fetch_object($result)

    db_lock_table($table)

    db_next_id($name)

    db_num_rows($result)

    db_query_range($query)

    db_query_temporary($query)

    db_result($result, $row = 0)

    db_status_report($phase)

    db_table_exists($table)

    db_unlock_tables()

    db_version()

    posted on 2007-12-03 10:02 周銳 閱讀(287) 評(píng)論(0)  編輯  收藏 所屬分類: PHP
    主站蜘蛛池模板: 97人妻精品全国免费视频 | 一二三四免费观看在线视频中文版 | 亚洲福利电影一区二区?| 亚洲国产精品自在拍在线播放| 亚洲网站免费观看| 免费毛片在线看不用播放器 | 日韩免费a级在线观看| 97久久免费视频| 国产精品免费久久久久电影网| 亚洲AV日韩AV一区二区三曲| 亚洲国产av一区二区三区丶| 久久久亚洲欧洲日产国码农村| 久久精品国产亚洲精品| 成人午夜性A级毛片免费| 国产免费不卡视频| 午夜影院免费观看| a级片免费在线播放| 一个人看的www免费高清| 美女露100%胸无遮挡免费观看| 亚洲日本一线产区和二线| 亚洲欧洲精品国产区| 久久精品亚洲日本佐佐木明希| 亚洲精品无码日韩国产不卡?V| 国产成人高清精品免费鸭子| 男人的好看免费观看在线视频| 国产电影午夜成年免费视频| 亚洲高清免费在线观看| 日韩在线永久免费播放| 亚洲国产精品免费视频| 日本在线免费观看| 无人在线观看免费高清| 99久久久国产精品免费牛牛四川| 色欲A∨无码蜜臀AV免费播| 99蜜桃在线观看免费视频网站| 外国成人网在线观看免费视频| 久艹视频在线免费观看| 2021精品国产品免费观看| 久久成人国产精品免费软件| 最近高清中文字幕无吗免费看| 一二三四影视在线看片免费| 毛片a级毛片免费播放100|