0

我想像这样在安装过程中生成connector.php文件

$file = "connector.php";
$fp = fopen($file,"wb");

$content = "<?php $con=mysqli_connect('";
$content += $host;
$content += "', '";
$content += $user;
$content += "', '";
$content += $password;
$content += "', 'blog');  if (mysqli_connect_errno()) { echo 'Failed to connect to MySQL: ' . mysqli_connect_error(); }?>";

fwrite($fp,$content);
fclose($fp); 

但是当我尝试这段代码时,我只是生成空文件(当我尝试一些随机文本时,它工作正常),所以我认为,问题在于 PHP 试图解释和之间的所有<?php内容?>。我怎样才能使这段代码工作,并使 PHP 不解释 php 标签之间的代码。

4

2 回答 2

4

用作.=连接运算符。

使用+可能会将整个事物转换为整数。您还必须在第二个代码块的第一行周围使用单引号,因为 PHP 会尝试以$con其他方式解释未定义的变量。

$file = "connector.php";
$fp = fopen($file,"wb");

// Use single quotes here, otherwise PHP tries to interpret $con
$content = '<?php $con=mysqli_connect(\'';
$content .= $host;
$content .= "', '";
$content .= $user;
$content .= "', '";
$content .= $password;
$content .= "', 'blog');  if (mysqli_connect_errno()) { echo 'Failed to connect to MySQL: ' . mysqli_connect_error(); }?>";

fwrite($fp,$content);
fclose($fp); 
于 2013-08-11T19:57:08.897 回答
4

+=是数字运算符并且.=是字符串运算符。您当前+=在代码中使用它会导致 PHP 将其解释为数字。

+or运算符首先将值转换为整数(所有字符串在+=转换为整数时计算为零),然后将它们相加,因此您得到 0。这就是您的代码没有产生预期结果的原因。

请参阅上面的 ComFreek 的回答

另外,一个不相关的问题:告诉 PHP 不要使用字符串中的实际变量值,只需将它们转义,如下所示:

$content = "<?php \$con=mysqli_connect('";

或者,您可以使用单引号:

$content = '<?php $con=mysqli_connect(\'';

参考:#2202331

于 2013-08-11T19:58:15.503 回答