Drupal7连接多个数据库及常见问题解决
如果你遇到这些问题: 一、Drupal如何连接到多个数据库?允许Drupal连接多个数据库,需要转换$db_url为数组。默认连接单个数据库的URL格式(字符串): 代码如下: $db_url = 'mysqli://username:password@localhost/databasename';
$db_url = 'pgsql://username:password@localhost/databasename'; 支持多个数据库的URL格式(数组): 代码如下: $db_url['mydb'] = 'mysql://user:pwd@localhost/anotherdb';
$db_url['db3'] = 'mysql://user:pwd@localhost/yetanotherdb'; 当查询一个不同的数据库时,简单地将数据库通过$db_url的引用键设置为当前活动的数据库,即可使用。 代码如下: db_set_active('mydb');
db_query('SELECT * FROM table_in_anotherdb'); // 当数据获取完成后,切换回默认的数据库连接。 db_set_active('default'); ?> 这是Drupal的数据库操作的基本操作。 二、Drupal连接到多个数据库后,但是发现程序报错,这是怎么了?链接到多个数据库时出现报错,主要可能以下原因: 1.连接到其他数据库时,SQL出错了,这个是人为的代码错误; 解决方法: 三、Drupal获取、添加、修改、删除多个数据库时,没有正常工作?1、在Drupal中SQL语句可以不带数据表的前缀,只需要用大括号{}包含table就可以在数据库操作时加上数据表的前缀。 代码如下: $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及其基本字段; 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某个函数调用或控制其他数据库请看下面的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引用: 代码如下: 设置完数据库后,记得使用db_set_active('default');,设置数据库连接恢复到默认。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |