连接MYSQL-如何在setting.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' => '',

我需要连接到Drupal7中php文件中的数据库。每次从本地服务器移动到开发服务器时,我都会看到
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提供的方法来利用现有的数据库连接来执行查询

您可以使用两种主要方法:

  • -适用于非限制性结果
  • -相当于在sql中添加“限制X,Y”
  • *从Drupal文档中,可以看到以下SQL:

    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');