亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

Drupal7連接多個數據庫及常見問題解決

2024-05-04 23:21:46
字體:
來源:轉載
供稿:網友

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

復制代碼 代碼如下:

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

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

復制代碼 代碼如下:

$db_url['default'] = 'mysql://drupal:drupal@localhost/drupal';
$db_url['mydb'] = 'mysql://user:pwd@localhost/anotherdb';
$db_url['db3'] = 'mysql://user:pwd@localhost/yetanotherdb';

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

復制代碼 代碼如下:

<?php
db_set_active('mydb');
db_query('SELECT * FROM table_in_anotherdb');
// 當數據獲取完成后,切換回默認的數據庫連接。
db_set_active('default');
?>

這是Drupal的數據庫操作的基本操作。

二、Drupal連接到多個數據庫后,但是發現程序報錯,這是怎么了?

鏈接到多個數據庫時出現報錯,主要可能以下原因:

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

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

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

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

復制代碼 代碼如下:


$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就可以共用一個用戶信息數據庫usertable,其中z_代表數據表的前綴。

注意:

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

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

例如:

復制代碼 代碼如下:


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

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


四、在Drupal某個函數調用或控制其他數據庫

請看下面的function框架代碼:

復制代碼 代碼如下:


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


特別要主要,$db_url是全局變量,需要在局部函數中用global引用:

復制代碼 代碼如下:

global $db_url; //獲取全局變量


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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区久久久| 久久精品国产一区二区电影| 最近2019年中文视频免费在线观看| 国产亚洲欧美另类中文| 亚洲激情视频网站| 亚洲国产日韩欧美在线动漫| 久久久久www| 亚洲国产97在线精品一区| 亚洲黄色www网站| 精品视频—区二区三区免费| 日韩一二三在线视频播| 精品成人国产在线观看男人呻吟| 日韩精品中文字幕在线| 中文字幕不卡av| 亚洲精品成人久久电影| 亚洲欧美日韩成人| 国产a级全部精品| 亚洲片在线观看| 日韩综合中文字幕| 日韩精品视频免费专区在线播放| 不卡av电影在线观看| 51精品在线观看| 91大神在线播放精品| 97国产一区二区精品久久呦| 欧美—级a级欧美特级ar全黄| 欧美日韩久久久久| 5252色成人免费视频| 午夜精品99久久免费| 日韩免费观看视频| 国内精品久久久久影院 日本资源| 亚洲第一页中文字幕| 狠狠色狠狠色综合日日小说| 国产成人短视频| 欧美成aaa人片在线观看蜜臀| 亚洲高清免费观看高清完整版| 欧美日韩国产第一页| 91免费看视频.| 欧美电影在线观看完整版| 久久国产精品久久久久久久久久| 久久久精品视频在线观看| 日韩资源在线观看| 欧美xxxx综合视频| 久久人人爽人人爽爽久久| 欧美激情亚洲激情| 91在线精品播放| 国产精品∨欧美精品v日韩精品| 2019日本中文字幕| 欧美日本亚洲视频| 91沈先生在线观看| 亚洲第一福利在线观看| 欧美大尺度在线观看| 成人久久久久久| 亚洲精品720p| 欧美日韩亚洲国产一区| 欧美激情国产日韩精品一区18| 欧美一级片久久久久久久| 国产免费一区二区三区在线观看| 欧美一级片久久久久久久| 久久久精品2019中文字幕神马| 亚洲第一免费播放区| 国产精品国内视频| 国产精品美女网站| 国产精品美女久久久久av超清| 欧美视频一二三| 亚洲精品小视频| 精品国内产的精品视频在线观看| 欧美激情免费观看| 日韩av在线免费播放| 国产亚洲精品久久久久久777| 国产99视频在线观看| 国产欧亚日韩视频| 26uuu亚洲伊人春色| 日韩av影视综合网| 久久成人这里只有精品| 国产精品a久久久久久| 日韩中文字幕视频在线观看| 亚洲国产成人91精品| 国产精品免费视频久久久| 91在线视频导航| 欧美丰满老妇厨房牲生活| 欧美成人免费全部| 久久国产精品偷| 91精品国产高清自在线| 亚洲激情中文字幕| 91精品久久久久久久| 亚洲最大中文字幕| 68精品久久久久久欧美| 中文字幕亚洲一区在线观看| 最新国产成人av网站网址麻豆| 亚洲欧洲在线看| 狠狠躁夜夜躁久久躁别揉| 亚洲成人激情在线| 亚洲系列中文字幕| 欧美野外猛男的大粗鳮| 日本韩国在线不卡| 欧美视频中文字幕在线| 日韩av电影在线播放| 国产剧情久久久久久| 欧美精品久久久久| 国产成人精品久久亚洲高清不卡| 在线日韩欧美视频| 亚洲第一精品电影| 亚洲第一福利网站| 亚洲天堂av在线免费| 日本19禁啪啪免费观看www| 亚洲在线免费观看| 成人黄色av免费在线观看| 国产不卡一区二区在线播放| 欧美日韩性生活视频| 成人春色激情网| 538国产精品一区二区在线| 清纯唯美亚洲综合| 91tv亚洲精品香蕉国产一区7ujn| 91久久精品国产91性色| 精品丝袜一区二区三区| 久久久久久久久久久免费| 欧美日韩色婷婷| 欧美午夜性色大片在线观看| 国产成人精品免高潮费视频| 久久69精品久久久久久久电影好| 丝袜一区二区三区| 国产精品久久久久久久久久新婚| 韩国福利视频一区| 亚洲精品在线不卡| 亚洲经典中文字幕| 久久久国产精品亚洲一区| 成人在线激情视频| 中文一区二区视频| 91啪国产在线| 欧美激情久久久| 激情亚洲一区二区三区四区| 色综合久久久888| 亚洲欧美中文日韩在线| 91系列在线播放| 国产成人精彩在线视频九色| 欧美色欧美亚洲高清在线视频| 亚洲精品国产suv| www.亚洲一二| 亚洲天堂av在线免费观看| 欧美精品18videos性欧美| 欧美精品手机在线| 在线亚洲午夜片av大片| 国产精品一区av| 777777777亚洲妇女| 亚洲区一区二区| 欧美放荡办公室videos4k| 久久夜色精品亚洲噜噜国产mv| 亚洲天堂免费在线| 91精品国产自产在线老师啪| 91经典在线视频| 色偷偷亚洲男人天堂| 97视频在线观看免费高清完整版在线观看| 国产美女直播视频一区| 在线观看亚洲视频| 亚洲美女福利视频网站| 国产日韩欧美视频| 成人免费淫片aa视频免费| 91在线观看免费| 久久久久国产精品免费| 2019中文字幕在线| 久久91亚洲精品中文字幕奶水| 欧美成aaa人片免费看| 日本中文字幕不卡免费| 欧美午夜影院在线视频|