一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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

如果你遇到這些問題:
1.Drupal如何連接到多個(gè)數(shù)據(jù)庫?
2.Drupal連接到多個(gè)數(shù)據(jù)庫后,但是發(fā)現(xiàn)程序報(bào)錯(cuò),這是怎么了?
3.Drupal獲取、添加、修改、刪除多個(gè)數(shù)據(jù)庫時(shí),數(shù)據(jù)沒有正確的寫入數(shù)據(jù)庫或者讀取到空的數(shù)據(jù),怎么解決?
4.只想在Drupal某個(gè)函數(shù)調(diào)用或控制其他數(shù)據(jù)庫,但是失敗了?
請認(rèn)真看看后面的介紹,并如何解決你的問題。
一、Drupal如何連接到多個(gè)數(shù)據(jù)庫?
允許Drupal連接多個(gè)數(shù)據(jù)庫,需要轉(zhuǎn)換$db_url為數(shù)組。
默認(rèn)連接單個(gè)數(shù)據(jù)庫的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ù)庫的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ù)庫時(shí),簡單地將數(shù)據(jù)庫通過$db_url的引用鍵設(shè)置為當(dāng)前活動的數(shù)據(jù)庫,即可使用。
復(fù)制代碼 代碼如下:<?php
db_set_active('mydb');
db_query('SELECT * FROM table_in_anotherdb');
// 當(dāng)數(shù)據(jù)獲取完成后,切換回默認(rèn)的數(shù)據(jù)庫連接。
db_set_active('default');
?>

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

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

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

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

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

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

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

注意:

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

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

例如:
復(fù)制代碼 代碼如下:
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ù)表。
所以當(dāng)你遇到Drupal獲取、添加、修改、刪除多個(gè)數(shù)據(jù)庫時(shí),數(shù)據(jù)沒有正確的寫入數(shù)據(jù)庫或者讀取到空的數(shù)據(jù),請明確你所控制的數(shù)據(jù)庫、數(shù)據(jù)表位置是否正確。


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

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

特別要主要,$db_url是全局變量,需要在局部函數(shù)中用global引用:
復(fù)制代碼 代碼如下:global $db_url; //獲取全局變量
設(shè)置完數(shù)據(jù)庫后,記得使用db_set_active('default');,設(shè)置數(shù)據(jù)庫連接恢復(fù)到默認(rèn)。

php技術(shù)Drupal7連接多個(gè)數(shù)據(jù)庫及常見問題解決,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 成人两性视频 | 国产高清自拍一区 | 国内精品久久久久久久星辰影视 | 超级香蕉97视频在线观看一区 | 久热香蕉视频 | 国产精品极品美女自在线看免费一区二区 | 国产在热线精品视频国产一二 | 国产成人啪精品视频免费网 | 麻豆精品密在线观看 | 国产在视频线精品视频www666 | 国产成人精品免费2021 | 亚洲精品第一国产综合高清 | 污视频免费在线播放 | se视频在线 | 国产九九在线 | 99国产国人青青视频在线观看 | 黄视频入口| 日本xxxⅹ色视频在线观看网站 | 中文成人在线视频 | 国产成人禁片在线观看 | 久久久久久久综合狠狠综合 | 91久久精品国产免费一区 | 亚洲综合一区二区不卡 | 国产精品人成 | 一级美女| 久久免费视频8 | 国产久热香蕉在线观看 | 一级做a爰片久久毛片武则天 | 99色亚洲| 四虎永久免费地址在线观看 | 久久久久久久国产精品 | 真人一级毛片国产 | 色综合a | 亚洲黄区 | 国产欧美日韩haodiaose | 91精品久久久久久久久中文字幕 | 五月天婷婷一区二区三区久久 | 欧美精品色视频 | 国内精自线一二区 | 欧美成人综合在线观看视频 | 精品一区二区三区免费 |