2016-05-13 5 views
0

を定義し、私は中に呼び出された私のconfig.phpでこの新しいPDOの問題が..私が事前に定義された変数に新しいPDOを呼び出すとき、私は問題を持っている</p> <p>を

define('SQL_BDD', 'ctms_demo'); 

を得ましたすべての.phpのページ私はそれがうまく動作しますが、WHEN I

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

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

この

を呼び出すときに、私はどこでも

それを使用することができますこのライン

$dbname=SQL_BDD; 

.. OK ..ですので、問題がどこにあるか、私は本当に見ていない私は、二重引用符を使用しての話をいくつかのトピックを探した

...それはもう動作しません変更します

編集:私はこの追加:

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

を、私は "mysqlの:ホスト= localhostの; DBNAME = ctms_demo" だ、定義されたvarが働いているので..私は理解していない...

をの
+0

「動作しません」を定義しますか?どのエラーメッセージ/症状? – Timo

+0

エラーメッセージが表示されず、ページが正常に読み込まれたときにページがリロードされます。 – Nemka

答えて

0

定数は、引用符の内側に展開されますので、それらを打破されていません。

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

二重引用符の内部変数と魔法が$です。 PHPパーサはあなたが定数SQL_BDDを意味し、テキストSQL_BDDではないことをどのように知っていますか?これは、文字列内の各単語をチェックし、定義された定数テーブルで検索するのは非常に高価な操作になります。

+0

AbraCadaver私はあなたに送るURLを読んでいます – 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

関連する問題