我想在安装过程中生成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
和{之间的所有内容{1}}。如何使这段代码工作,让PHP不解释php标签之间的代码。
答案 0 :(得分: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);
答案 1 :(得分:4)
+=
是一个数字运算符,.=
是一个字符串运算符。您目前在代码中使用+=
,这将导致PHP将其解释为数字。
+
或+=
运算符首先将值转换为整数(并且在转换为整数时将所有字符串计算为零)然后添加它们,这样就得到0.这就是为什么你的代码不是'产生预期的结果。
请参阅上面的ComFreek answer。
另外,一个不相关的问题:告诉PHP不要使用字符串中的实际变量值,只需将它们转义,如下所示:
$content = "<?php \$con=mysqli_connect('";
或者,您可以使用单引号:
$content = '<?php $con=mysqli_connect(\'';
参考:#2202331