连接MYSQL-如何在setting.php中访问数据库数组
我需要连接到Drupal7中php文件中的数据库。每次从本地服务器移动到开发服务器时,我都会看到连接MYSQL-如何在setting.php中访问数据库数组,php,mysql,drupal,drupal-7,Php,Mysql,Drupal,Drupal 7,我需要连接到Drupal7中php文件中的数据库。每次从本地服务器移动到开发服务器时,我都会看到setting.php文件,其中包含数据库数组 $databases = array ( 'default' => array ( 'default' => array ( 'database' => 'my_db', 'username' => 'root', 'password' => '',
setting.php
文件,其中包含数据库数组
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'my_db',
'username' => 'root',
'password' => '',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);
如何在drupal 7中访问此数据库数组以使用它连接到数据库
$con = mysqli_connect('localhost','root','','my_db');
我正在寻找drupal实现这一目标的方法
感谢您的帮助类似的方法应该可以奏效:
include "settings.php";
$con=mysqli_connect($databases['default']['default']['host'],$databases['default']['default']['username'],$databases['default']['default']['password'],$databases['default']['default']['database']);
您只需从数组中取出这些值。编辑:我的脑子里使用了错误的编程语言。对不起 再次编辑:删除标准的PHPDB查询方法而代之以Drupal方法 根据您提供的,您不需要在Drupal环境中创建数据库连接。您可以使用Drupal提供的方法来利用现有的数据库连接来执行查询 您可以使用两种主要方法:
SELECT n.nid, n.title, n.created FROM node n WHERE n.uid = $uid
ORDER BY n.created DESC LIMIT 0, 10;
在Drupal中的最佳执行方式是:
$result = db_query_range('SELECT n.nid, n.title, n.created
FROM {node} n WHERE n.uid = :uid
ORDER BY n.created DESC', 0, 10, array(':uid' => $uid));
同样,最好参考这一点,并使用Drupal方法。我在设置RSS提要以动态利用Drupal 7中settings.php中存储的数据库常量时遇到了这个问题。我需要动态获取该文件中$databases数组中的信息。下面是我如何解决它的(运行PHP5.3) 前两行解决了创建不同文件夹/更改文件结构的问题,只需将脚本指向该文件,如果文件位于其他位置,只需从文档根目录中瞄准“/sites/default/”,然后include语句获取实际的文件信息,以便您可以在脚本中进一步使用它 $connection脚本也很简单,让您登录到服务器,然后选择数据库,使用通过上面引用的include语句访问的$databases数组值进入数据库,以便运行RSS代码
这个RSS提要是我在PHP中的第一个真正的项目,它非常有趣和富有挑战性,我期待着更多的编码冒险 检查,希望能对你有所帮助。@leo-感谢你的快速回复,但ans只是告诉我如何在
setting.php
中动态设置$database数组,因为我正在寻找访问“$database”数组的位置,以便使用它连接MYSQL…..如果我不清楚,请原谅我的任何困惑。我是否需要包括setting.php
。。。drupal的工作方式是什么嘿,在阅读了你引用的文章之后,drupal似乎有自己的工作方式。他们声称您可以使用Drupal通过使用“db_query()”或“db_query_range()”创建的数据库连接,而无需执行任何其他操作。您在这些函数中尝试过SQL吗?现在就尝试!!!我对Drupal不太熟悉,我不知道这一点,似乎我们可以访问Drupal中的数据库而无需建立连接。。。我想它可能会有用…让我试试!!!!谢谢我不确定我是否需要包括setting.php
如何以Drupal的方式完成?看起来有些人正在尝试使用文件的URL“包含”,你可以看看人们在这里使用的其他方法:这里的一条评论似乎是一致的:“我的同事在我仔细考虑这个问题时也发现了。这样做,在你的主题目录中,创建一个名为“包含”的新目录“然后,作为您的php文件,请确保它们具有扩展名“.inc”,所以:/sites/all/themes/your_-themes/includes,然后创建您的文件:/sites/all/themes/your_-themes/includes/file-you-want-in-block.inc,现在就这样做吧:不知道为什么会这样,但它可以工作:)希望这对您都有帮助”
$INC_DIR = $_SERVER["DOCUMENT_ROOT"]. "/sites/default/";
include($INC_DIR. "settings.php");
$connection = @mysql_connect($databases['default']['default']['host'],$databases['default']['default']['username'],$databases['default']['default']['password'])
or die ('Could not connect to database');
mysql_select_db($databases['default']['default']['database'])
or die ('Could not select database');