INI文件中的数据库信息

时间:2016-01-28 15:10:38

标签: 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());
    }


?>

它无效,我收到此错误消息:

  

解析错误:第14行的C:\ xampp \ htdocs \ connectmySQL.php中的语法错误,意外的''(T_ENCAPSED_AND_WHITESPACE),期望标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)。

我的ini文件的组成是:

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

有人能帮助我吗?

1 个答案:

答案 0 :(得分:2)

基本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周期。