0

アプリのインストール ウィザードを作成しようとしています。手順の 1 つで、ユーザーの接続の詳細をファイルに書き込み/保存しようとしています。これを行うためのより良い方法を知っている人はいますか。$ 記号に達すると、私のコードは明らかに壊れます。

    $myFile = "../functions/config2.php";
    $fh = fopen($myFile, 'w') or die("can't open file");

    $stringData = "<? #DATABASE CONNECTIONS\n";
    fwrite($fh, $stringData);

    $stringData = "$dbservertype='mysql';\n";
    fwrite($fh, $stringData);

    $stringData = "$servername='".$_POST['host']."';\n";
    fwrite($fh, $stringData);

    $stringData = "$dbusername='".$_POST['dbusername']."';\n";
    fwrite($fh, $stringData);

    $stringData = "$dbpassword='".$_POST['dbpass']."';\n";
    fwrite($fh, $stringData);

    $stringData = "$dbname='".$_POST['dbname']."';\n";
    fwrite($fh, $stringData);

    $stringData = "global $link;\n";
    fwrite($fh, $stringData);

    $stringData = "$link=mysql_connect ('$servername','$dbusername','$dbpassword');\n";
    fwrite($fh, $stringData);

    $stringData = "if(!$link){die('Could not connect to MySQL');}\n";
    fwrite($fh, $stringData);

    $stringData = "mysql_select_db('$dbname',$link) or die ('could not open db'.mysql_error());\n";
    fwrite($fh, $stringData);

    fclose($fh);

書き込まれたファイルが次のようになるようにしたい

    <?
    //DATABASE CONNECTIONS
    $dbservertype='mysql';
    $servername='posted_server';
    $dbusername='posted_user';
    $dbpassword='posted_pass';
    $dbname='posted_dbname';

    global $link;
    $link=mysql_connect ("$servername","$dbusername","$dbpassword");
    if(!$link){die("Could not connect to MySQL");}
    mysql_select_db("$dbname",$link) or die ("could not open db".mysql_error());
    ?>

私の出力は今このようになります

    <? #DATABASE CONNECTIONS
    ='mysql';
    ='host';
    ='user';
    ='pass';
    ='dbname';
    global ;
    =mysql_connect ('','','');
    if(!){die('Could not connect to MySQL');}
    mysql_select_db('',) or die ('could not open db'.mysql_error());
4

1 に答える 1

1

有効な変数名を二重引用符で囲んだ場合、php で二重引用符 " を使用しています。php はその変数を補間し、存在しない場合は何も解決しないか、エラーをスローします。ここを参照してください。

$ 記号をエスケープする必要があります。

$stringData = "\$dbservertype='mysql';\n";
于 2012-10-25T21:46:23.133 に答える