欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Drupal7連接多個(gè)數(shù)據(jù)庫(kù)及常見(jiàn)問(wèn)題解決

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

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

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

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

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

當(dāng)查詢一個(gè)不同的數(shù)據(jù)庫(kù)時(shí),簡(jiǎn)單地將數(shù)據(jù)庫(kù)通過(guò)$db_url的引用鍵設(shè)置為當(dāng)前活動(dòng)的數(shù)據(jù)庫(kù),即可使用。

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

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

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

鏈接到多個(gè)數(shù)據(jù)庫(kù)時(shí)出現(xiàn)報(bào)錯(cuò),主要可能以下原因:

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

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

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

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

復(fù)制代碼 代碼如下:

$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_',
);

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

注意:

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

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

例如:

復(fù)制代碼 代碼如下:

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

上面的SQL語(yǔ)句直接定位到test數(shù)據(jù)庫(kù),z_table數(shù)據(jù)表。
所以當(dāng)你遇到Drupal獲取、添加、修改、刪除多個(gè)數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)沒(méi)有正確的寫(xiě)入數(shù)據(jù)庫(kù)或者讀取到空的數(shù)據(jù),請(qǐng)明確你所控制的數(shù)據(jù)庫(kù)、數(shù)據(jù)表位置是否正確。


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

請(qǐng)看下面的function框架代碼:

復(fù)制代碼 代碼如下:

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ù)庫(kù)連接的SQL
  db_set_active('default');
}

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

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

相關(guān)文章

  • php版微信公眾平臺(tái)入門(mén)教程之開(kāi)發(fā)者認(rèn)證的方法

    php版微信公眾平臺(tái)入門(mén)教程之開(kāi)發(fā)者認(rèn)證的方法

    這篇文章主要介紹了php版微信公眾平臺(tái)入門(mén)教程之開(kāi)發(fā)者認(rèn)證的方法,結(jié)合實(shí)例形式分析了php版微信公眾平臺(tái)開(kāi)發(fā)者認(rèn)證的步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2016-09-09
  • PHP開(kāi)發(fā)框架kohana中處理ajax請(qǐng)求的例子

    PHP開(kāi)發(fā)框架kohana中處理ajax請(qǐng)求的例子

    這篇文章主要介紹了PHP開(kāi)發(fā)框架kohana中處理ajax請(qǐng)求的例子,kohana是一個(gè)PHP5開(kāi)發(fā)框架,需要的朋友可以參考下
    2014-07-07
  • Thinkphp 中 distinct 的用法解析

    Thinkphp 中 distinct 的用法解析

    TP中distinct()的用處主要是去除重復(fù)的值,下面我通過(guò)實(shí)例代碼給大家介紹下Thinkphp 中 distinct 的用法,一起看看吧
    2016-12-12
  • twig里使用js變量的方法

    twig里使用js變量的方法

    這篇文章主要介紹了twig里使用js變量的方法,結(jié)合實(shí)例形式對(duì)比分析了在twig中使用js變量的相關(guān)調(diào)用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-02-02
  • laravel框架創(chuàng)建授權(quán)策略實(shí)例分析

    laravel框架創(chuàng)建授權(quán)策略實(shí)例分析

    這篇文章主要介紹了laravel框架創(chuàng)建授權(quán)策略,結(jié)合實(shí)例形式分析了laravel框架創(chuàng)建授權(quán)策略的相關(guān)步驟、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • Laravel5.1 框架數(shù)據(jù)庫(kù)操作DB運(yùn)行原生SQL的方法分析

    Laravel5.1 框架數(shù)據(jù)庫(kù)操作DB運(yùn)行原生SQL的方法分析

    這篇文章主要介紹了Laravel5.1 框架數(shù)據(jù)庫(kù)操作DB運(yùn)行原生SQL的方法,結(jié)合實(shí)例形式分析了laravel5.1使用DB運(yùn)行原生SQL的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • CodeIgniter配置之config.php用法實(shí)例分析

    CodeIgniter配置之config.php用法實(shí)例分析

    這篇文章主要介紹了CodeIgniter配置之config.php用法,結(jié)合實(shí)例形式詳細(xì)的分析了CodeIgniter中配置文件config.php的參數(shù)含義及具體使用技巧,需要的朋友可以參考下
    2016-01-01
  • 將php數(shù)組輸出html表格的方法

    將php數(shù)組輸出html表格的方法

    這篇文章主要介紹了將php數(shù)組輸出html表格的方法,需要的朋友可以參考下
    2014-02-02
  • thinkphp諸多限制條件下如何getshell詳解

    thinkphp諸多限制條件下如何getshell詳解

    這篇文章主要給大家介紹了關(guān)于thinkphp諸多限制條件下如何getshell的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • php微信開(kāi)發(fā)之百度天氣預(yù)報(bào)

    php微信開(kāi)發(fā)之百度天氣預(yù)報(bào)

    這篇文章主要為大家詳細(xì)介紹了php微信開(kāi)發(fā)之百度天氣預(yù)報(bào)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11

最新評(píng)論