You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP写入其他PHP文件时$con与$result变量丢失问题求助

问题分析与解决方案

我来帮你拆解下这个问题——你遇到的$con和$result变量丢失的情况,大概率是PHP的变量解析机制导致的,下面给你详细说明原因和解决办法:

问题根源

当你定义要写入的内容$txt时,如果使用了双引号或者直接拼接字符串,PHP会自动解析字符串中$开头的变量,把它们替换成当前脚本中这些变量的实际值。如果你的当前脚本里$con、$result没有被定义,或者值为空,写入到新文件时这些位置就会变成空白,自然看不到这些变量名了。

举个例子,如果你是这样定义$txt的:

$txt = "<?php $con=mysqli_connect(...); ... ?>";
fwrite($newfile, $txt);

这时候PHP会把$con当成当前脚本的变量去解析,而不是把它作为纯文本保留下来。

解决办法

有两种常用的方式可以避免这个问题,让变量名原封不动写入目标文件:

1. 使用单引号包裹要写入的代码

单引号字符串里的变量不会被PHP解析,会完整保留原有的变量名和语法:

$txt = '<?php $con=mysqli_connect("localhost","dbuser","pw","db"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result = mysqli_query($con,"SELECT * FROM me where me_genre like \'%$var7%\' LIMIT 6"); while($row = mysqli_fetch_array($result)) { echo "</div>"; } mysqli_close($con); ?>';

// 打开并写入文件
$newfile = fopen('target-file.php', 'w');
fwrite($newfile, $txt);
fclose($newfile);

注意:单引号内部的单引号需要用\转义(比如上面的\'%$var7%\'),这样写入后才会保留原有的单引号格式。

2. 转义变量前的$符号

如果一定要用双引号定义内容,就在每个需要保留的$前面加反斜杠\,让PHP把它当成普通字符处理:

$txt = "<?php \$con=mysqli_connect(\"localhost\",\"dbuser\",\"pw\",\"db\"); if (mysqli_connect_errno()) { echo \"Failed to connect to MySQL: \" . mysqli_connect_error(); } \$result = mysqli_query(\$con,\"SELECT * FROM me where me_genre like '%\$var7%' LIMIT 6\"); while(\$row = mysqli_fetch_array(\$result)) { echo \"</div>\"; } mysqli_close(\$con); ?>";

// 打开并写入文件
$newfile = fopen('target-file.php', 'w');
fwrite($newfile, $txt);
fclose($newfile);

这里把$con改成\$con,$result改成\$result,PHP就不会解析这些变量,而是把它们作为纯文本写入目标文件。

另外提醒:如果你希望$var7在目标文件中也作为变量使用,也要确保它被正确保留——单引号方式会直接保留,双引号方式需要写成\$var7。

内容的提问来源于stack exchange,提问作者Me Mario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:59:22