php - INI 文件中的数据库信息

标签 php mysql

<分区>

对于我的学校项目,我需要从一个数据库中恢复一些信息并与另一个数据库相关联。但是为此我想使用一个 ini 文件,因为如果一个数据库的连接日志发生变化,我不想在代码中更改它。

我的代码是:

<?php
// On recupére les info dans fichier ini pour mySQL
//Get Information in ini for mySQL

$fichier = 'BDDconnexion.ini';

if(file_exists($fichier)){

$config = parse_ini_file($fichier,true);

$ip = "$config['mySQL'][ip]";
$port = "$config['mySQL'][port]";
$nomBDD = "config['mySQL'][nomBDD]";
$login = "$config['mySQL'][login]";
$password = "$config['mySQL'][password]";


}

// On se connecte à MySQL
//Connexion to MySQL
try {
$bdd = new PDO(mysql . ':host='.$ip.'dbname='.$nomBDD,$login,$password,array(PDO::ATTR_ERRMODE =>  PDO::ERRMODE_EXCEPTION));
    } 
catch (Exception $e) 
    {
     die('Erreur : '. $e->getMessage());
    }


?>

它不工作,我收到此错误消息:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\connectmySQL.php on line 14.

我的ini文件的组成是:

[mySQL]
ip="127.0.0.1"
port=4900
nomBDD=MagicCash
login="******"
password=""

有人可以帮助我吗?

最佳答案

基本 PHP:您不能在 " 引号字符串中包含引号数组键:

$ip = "$config['mySQL'][ip]";
               ^-----^--- incorrect

以下是此类事物的正确语法:

$ip = "foo $arr[key] bar";
$ip = "foo {$arr['key']} bar"; // note the {}
$Ip = "foo " . $arr['key'] . " bar";

另请注意,您使用的是多维数组,这也会导致问题。 PHP 的解析器不是贪心的:

$foo['bar']['baz'] = 'qux';
echo "$foo[bar][baz]"; // output is "Array[baz]"

对于 " 引号字符串中的多维数组变量,您必须使用{}表示法:

echo "{$foo['bar']['baz']}"; // outputs 'qux'

当然,在更大的方案中,您的变量根本不需要引用。这两个语句

$foo = "$bar";
$foo = $bar;

在功能上基本相同,除了 "$bar" 版本强制 PHP 创建一个新字符串,填充 $bar 值,然后将其分配给 $foo .如果 $bar 不是字符串,有时这是需要的,但通常这是对 cpu 周期的浪费。

关于php - INI 文件中的数据库信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35065104/

相关文章:

javascript - 用于电子邮件验证的 UI 对话框不显示任何对话框

php - 链接 PHP PDO 查询

php - 如何让文本框变回空白

mysql - 选择最后一条记录并比较日期时间

mysql - NORMSINV函数在MySQL中的实现

php - 为什么 Laravel 几乎所有东西都有契约/接口(interface)?

php - WooCommerce 订单电子邮件更改/从产品元中删除 "backordered: #"

mysql - zend 适配器类的 fetchall 函数不起作用

MYSQL - 连接 3 个表按月分组,包括空月

mysqld.exe : Table '.\mysql\db' is marked as crashed and should be repaired