对于我的学校项目,我需要恢复一个数据库的一些信息并与另一个数据库关联。但为此我想使用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=""
有人能帮助我吗?
答案 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周期。