2016-05-13 59 views
0

我有我的呼喚新的PDO與預先定義的變量問題..新PDO問題與VAR字符串定義

我得到這個

define('SQL_BDD', 'ctms_demo'); 
在我的config.php

這就是所謂的每.PHP頁面,所以我可以在任何地方使用它

當我把這個

$hostname='localhost'; 
$dbname='ctms_demo'; 
$username='root'; 
$password='password'; 

$set = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); 

它工作正常,但是當我改變這一行

$dbname=SQL_BDD; 

它不工作了..

我找了一些話題談論使用雙引號是確定..所以我真的看不出是哪裏的問題..

編輯:我添加了這個:

$dsn = sprintf('mysql:host=%s;dbname=%s',$hostname,SQL_BDD); 
print_r($dsn); 
$set = new PDO($dsn, $username, $password); 

,我得到了 「MySQL的:主機=本地主機,數據庫名= ctms_demo」,所以定義變量被工作..我不明白..

+0

定義'不起作用'?哪些錯誤消息/症狀? – Timo

+0

我沒有任何錯誤信息,當我的網頁沒有任何錯誤信息時,它會自動重新加載..它確實.. – Nemka

回答

0

常量沒有擴展引號內,所以打破了出來:

$set = new PDO("mysql:host=$hostname;dbname=" . SQL_BDD, $username, $password); 

用雙引號內變量的法寶是$。 PHP解析器如何知道你的意思是不變的SQL_BDD而不是文本SQL_BDD?這將是一個非常昂貴的操作,用於檢查字符串中的每個單詞並在定義的常量表中查找它。

+0

謝謝AbraCadaver我正在閱讀你剛剛發送的網址 – Nemka

+0

它不能正常工作,所以我試過這個 ' $ dbname = SQL_BDD; \t \t $ file = fopen('text.txt','w +'); \t fwrite($ file,$ dbname); \t fclose($ file); \t $ dbname2 = $ dbname; \t \t $ file = fopen('text.txt','w +'); \t fwrite($ file,$ dbname2); \t fclose($ file);' 我在我的.txt文件中有'ctms_demo'..那麼爲什麼新的PDO不明白我想在'$ dbname var'中放入'ctms_demo'? – Nemka