最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Drupal7連接多個數(shù)據(jù)庫及常見問題解決

 更新時間:2014年03月02日 15:43:04   作者:  
這篇文章主要介紹了Drupal7連接多個數(shù)據(jù)庫的方法、操作實例,以及常見問題解決方法,需要的朋友可以參考下

如果你遇到這些問題:
1.Drupal如何連接到多個數(shù)據(jù)庫?
2.Drupal連接到多個數(shù)據(jù)庫后,但是發(fā)現(xiàn)程序報錯,這是怎么了?
3.Drupal獲取、添加、修改、刪除多個數(shù)據(jù)庫時,數(shù)據(jù)沒有正確的寫入數(shù)據(jù)庫或者讀取到空的數(shù)據(jù),怎么解決?
4.只想在Drupal某個函數(shù)調(diào)用或控制其他數(shù)據(jù)庫,但是失敗了?
請認真看看后面的介紹,并如何解決你的問題。
一、Drupal如何連接到多個數(shù)據(jù)庫?
允許Drupal連接多個數(shù)據(jù)庫,需要轉(zhuǎn)換$db_url為數(shù)組。
默認連接單個數(shù)據(jù)庫的URL格式(字符串):

復制代碼 代碼如下:
$db_url = 'mysql://username:password@localhost/databasename';
$db_url = 'mysqli://username:password@localhost/databasename';
$db_url = 'pgsql://username:password@localhost/databasename';

支持多個數(shù)據(jù)庫的URL格式(數(shù)組):

復制代碼 代碼如下:
$db_url['default'] = 'mysql://drupal:drupal@localhost/drupal';
$db_url['mydb'] = 'mysql://user:pwd@localhost/anotherdb';
$db_url['db3'] = 'mysql://user:pwd@localhost/yetanotherdb';

當查詢一個不同的數(shù)據(jù)庫時,簡單地將數(shù)據(jù)庫通過$db_url的引用鍵設(shè)置為當前活動的數(shù)據(jù)庫,即可使用。

復制代碼 代碼如下:
<?php
db_set_active('mydb');
db_query('SELECT * FROM table_in_anotherdb');
// 當數(shù)據(jù)獲取完成后,切換回默認的數(shù)據(jù)庫連接。
db_set_active('default');
?>

這是Drupal的數(shù)據(jù)庫操作的基本操作。

二、Drupal連接到多個數(shù)據(jù)庫后,但是發(fā)現(xiàn)程序報錯,這是怎么了?

鏈接到多個數(shù)據(jù)庫時出現(xiàn)報錯,主要可能以下原因:

1.連接到其他數(shù)據(jù)庫時,SQL出錯了,這個是人為的代碼錯誤;
2.連接數(shù)據(jù)庫時交叉了,所以在其他數(shù)據(jù)庫里找不到數(shù)據(jù)表,即使SQL正確,也要報錯;

解決方法:
針對第一種情況,請根據(jù)SQL報錯,來修改SQL語句,就解決了。
第二種情況,請檢查數(shù)據(jù)庫連接是否交叉了,意思就是本來想調(diào)用另外數(shù)據(jù)庫的數(shù)據(jù)表,但是數(shù)據(jù)庫連接已經(jīng)換到其他地方了。關(guān)于數(shù)據(jù)庫連接交叉,請仔細檢查db_set_active這個函數(shù)之后的SQL語句,是否在active數(shù)據(jù)庫里。

三、Drupal獲取、添加、修改、刪除多個數(shù)據(jù)庫時,沒有正常工作?

1、在Drupal中SQL語句可以不帶數(shù)據(jù)表的前綴,只需要用大括號{}包含table就可以在數(shù)據(jù)庫操作時加上數(shù)據(jù)表的前綴。
例如:db_query('SELECT * FROM {table_in_anotherdb}');
但是一個數(shù)據(jù)庫用戶,如果擁有多個數(shù)據(jù)庫的權(quán)限時,可以不用在$db_url設(shè)置連接到數(shù)據(jù)庫,直接在當前數(shù)據(jù)庫連接上操作就行了。
設(shè)置$db_prefix來實現(xiàn)跨數(shù)據(jù)庫操作:

復制代碼 代碼如下:

$db_prefix = array(
    'default' => ”,
    'authmap' => 'z_',
    'profile_fields' => 'usertable.z_',
    'profile_values' => 'usertable.z_',
    'users_roles' => 'usertable.z_',
    'users_fields' => 'usertable.',
    'role' => 'usertable.z_',
    'sessions' => 'usertable.z_',
    'users' => 'usertable.z_',
);

上面的代碼作用時,當前Drupal的用戶等信息全部使用usertable,這樣多個Drupal就可以共用一個用戶信息數(shù)據(jù)庫usertable,其中z_代表數(shù)據(jù)表的前綴。

注意:

a).users表用于存在Drupal用戶的基本信息,可以存儲所有用戶共用的UID及其基本字段;
b).sessions表用于存放Drupal用戶Sessions,可以統(tǒng)計所有站點的在線用戶量;
c).role表用于存放所有Drupal站的角色;
d).users_roles存放所有Drupal站的權(quán)限;
通過上面的$db_prefix可以全局設(shè)置使用那個表要用到那個數(shù)據(jù)庫,以及那個表的前綴,這個只是方便在Drupal的SQL語句中使用標準的{table}。

2、如果不通過$db_prefix來設(shè)置,那么最直白的方法就是直接把數(shù)據(jù)庫 表名在SQL語句中。

例如:

復制代碼 代碼如下:

db_query("SELECT uid FROM test.z_table1 WHERE name = '%s' and pass = '%s'", $name, md5($pass));

上面的SQL語句直接定位到test數(shù)據(jù)庫,z_table數(shù)據(jù)表。
所以當你遇到Drupal獲取、添加、修改、刪除多個數(shù)據(jù)庫時,數(shù)據(jù)沒有正確的寫入數(shù)據(jù)庫或者讀取到空的數(shù)據(jù),請明確你所控制的數(shù)據(jù)庫、數(shù)據(jù)表位置是否正確。


四、在Drupal某個函數(shù)調(diào)用或控制其他數(shù)據(jù)庫

請看下面的function框架代碼:

復制代碼 代碼如下:

function test_fuc() {
  global $db_url; //獲取全局變量
  $db_url['db_logs'] = 'mysqli://username:password@localhost/databasename';
  db_set_active('db_logs');
  $codehere; // 此處放置操作db_logs數(shù)據(jù)庫連接的SQL
  db_set_active('default');
}

特別要主要,$db_url是全局變量,需要在局部函數(shù)中用global引用:
復制代碼 代碼如下:
global $db_url; //獲取全局變量

設(shè)置完數(shù)據(jù)庫后,記得使用db_set_active('default');,設(shè)置數(shù)據(jù)庫連接恢復到默認。

相關(guān)文章

  • laravel 5異常錯誤:FatalErrorException in Handler.php line 38的解決

    laravel 5異常錯誤:FatalErrorException in Handler.php line 38的解決

    這篇文章主要給大家介紹了關(guān)于laravel 5異常錯誤:FatalErrorException in Handler.php line 38的解決方法,文中將解決方法介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-10-10
  • yii2實現(xiàn)

    yii2實現(xiàn) "上一篇,下一篇" 功能的代碼實例

    在很多頁面上都需要加入上一篇,下一篇 按鈕,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 通過curl模擬post和get方式提交的表單類

    通過curl模擬post和get方式提交的表單類

    寫了個簡單的腳本通過curl的方式模擬表單提交。可以通過數(shù)組和字符串兩種方式提交數(shù)據(jù),需要的朋友可以參考下
    2014-04-04
  • laravel多條件查詢方法(and,or嵌套查詢)

    laravel多條件查詢方法(and,or嵌套查詢)

    今天小編就為大家分享一篇laravel多條件查詢方法(and,or嵌套查詢),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • php時間戳格式化顯示友好的時間函數(shù)分享

    php時間戳格式化顯示友好的時間函數(shù)分享

    在一些微博系統(tǒng)中經(jīng)常要將時間于現(xiàn)在時間相比顯示為多久以前發(fā)布的,如顯示為:剛剛、5秒前、5小時前、5天前..這種顯示非常的友好,那么我們怎么用php來實現(xiàn)呢,這就是本文探討的內(nèi)容,各位看官請仔細閱讀下文
    2014-10-10
  • PHP調(diào)試及性能分析工具Xdebug詳解

    PHP調(diào)試及性能分析工具Xdebug詳解

    下面小編就為大家?guī)硪黄狿HP調(diào)試及性能分析工具Xdebug詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • PHP添加圖片水印、壓縮、剪切的封裝類

    PHP添加圖片水印、壓縮、剪切的封裝類

    為了防止自己辛苦制作的作品被別人竊取,經(jīng)常給作品添加水印,以此保證作品的唯一性,那么該怎么給圖片添加水印呢,如果作品尺寸過大,該如何處理呢,下面小編給大家詳細介紹有關(guān)PHP給圖片添加水印 壓縮 剪切的封裝類,需要的朋友可以參考下
    2015-08-08
  • Yii中創(chuàng)建自己的Widget實例

    Yii中創(chuàng)建自己的Widget實例

    這篇文章主要介紹了Yii中創(chuàng)建自己的Widget實現(xiàn)方法,結(jié)合具體實例形式較為詳細的分析了Yii中創(chuàng)建Widget的步驟與實現(xiàn)技巧,需要的朋友可以參考下
    2016-01-01
  • PHP實現(xiàn)rar解壓讀取擴展包小結(jié)

    PHP實現(xiàn)rar解壓讀取擴展包小結(jié)

    今天重點給大家介紹PHP 擴展就是針對于 rar 的壓縮包操作,不過,PHP 的 rar 擴展僅能讀取和解壓 rar 格式的壓縮包,并不能進行壓縮操作,關(guān)于 rar 的壓縮操作并沒有找到太多有用的資料,下面通過本文一起學習下PHP rar解壓讀取知識吧
    2021-06-06
  • php連接mssql數(shù)據(jù)庫的幾種方法

    php連接mssql數(shù)據(jù)庫的幾種方法

    數(shù)據(jù)庫查詢不外乎4個步驟,1、建立連接。2、輸入查詢代碼。3、建立查詢并取出數(shù)據(jù)。4、關(guān)閉連接。 php連接mssql數(shù)據(jù)庫有幾個注意事項,尤其mssql的多個版本、32位、64位都有區(qū)別。
    2013-02-02

最新評論

台北县| 宁晋县| 花莲市| 桐梓县| 高密市| 汽车| 栾城县| 都江堰市| 新丰县| 黑河市| 深水埗区| 霍城县| 台江县| 内丘县| 大余县| 岐山县| 宁武县| 安徽省| 揭西县| 云龙县| 房产| 黎川县| 安陆市| 昭苏县| 湾仔区| 镇赉县| 浦城县| 东阿县| 南乐县| 兴山县| 合水县| 团风县| 肥西县| 鹤岗市| 石门县| 酒泉市| 金阳县| 北流市| 城固县| 成都市| 汝南县|