为什么我在while循环中的str_replace没有按预期运行?
我的代码:
$comments=$_POST['comments'];
$result = mysql_query("SELECT * FROM cust LEFT JOIN contact AS contact ON cust.cid=contact.contact_id WHERE cid='$aDoor[$i]'");
while ($row = mysql_fetch_array($result)) {
$petname=$row['petname'];
echo "Petname ".$petname."<br/>";
$comments=str_replace("+petname","$petname",$comments);
echo $comments."<br/>";
}
当我执行此代码时,最奇怪的事情发生了。
这条线:
echo "Petname ".$petname."<br/>";
按预期工作,并在cid的数据库中回显正确的petname。
但
这一行:
$comments=str_replace("+petname","$petname",$comments);
echo $comments."<br/>";
将始终显示FIRST宠物的名字。当我在注释变量中添加正确的$ petname时,怎么会这样呢?
P.S。我正在做str_replace的原因是,当他向客户发送电子邮件时,使用它的人可以输入+ pet,当它到达客户端时,它将具有正确的宠物名称。
答案 0 :(得分:4)
这是因为$comments
在您第一次循环后被重新定义,所以说在开始时$comments
为+petname
,替换后$comments
$comments
将在行中保存petname的值,然后再次循环,使用$comments=$_POST['comments'];
$result = mysql_query("SELECT * FROM cust LEFT JOIN contact AS contact ON cust.cid=contact.contact_id WHERE cid='$aDoor[$i]'");
while ($row = mysql_fetch_array($result)) {
$petname=$row['petname'];
echo "Petname ".$petname."<br/>";
$comment_replaced=str_replace("+petname","$petname",$comments);
echo $comment_replaced."<br/>";
}
的值作为宠物名称,以解决此问题,只需更改变量的名称
{{1}}