PHP str_replace 在 while 循环中

PHP str_replace in while loop

str_replace中的while函数只returns第一行信息。这是电子邮件模板。

// I have a macro in my message. (member name)
$message = "Hi {%write_member_name%} how are you?";

$connect = mysql_query("SELECT * FROM members"); 
while($row=mysql_fetch_array($connect)){


$membername = $row["member_name"];

$message = str_replace('{%write_member_name%}', $membername ,$message);

echo $message."<br/>";

}

我应该有的结果。

杰克你好吗?

迈克你好吗?

亚历克斯你好吗?

但是我得到了错误的结果:

杰克你好吗?

杰克你好吗?

杰克你好吗?


如果我不使用 str_replace 函数,它可以正常工作。

如何在 while 循环中使用 str_replace 函数? 谢谢。

    $connect = mysql_query("SELECT * FROM members"); 
    while($row=mysql_fetch_assoc($connect)){
        $message = "Hi {%write_member_name%} how are you?";
        $membername = $row["member_name"];

        $message = str_replace('{%write_member_name%}', $membername ,$message);

        echo $message."<br/>";

    }

容易得多:

$connect = mysql_query("SELECT * FROM members"); 
while($icerik=mysql_fetch_array($connect)){

echo $message =  "Hi" . $row["member_name"] . "how are you? <br/>";


}

你为此使用 sprintf()

Replace the percent (%) sign by a variable passed as an argument:

$membername = "";
$connect = mysql_query("SELECT * FROM members");
while ($row = mysql_fetch_array($connect)) {
    $membername = $row["member_name"];
    $message = sprintf("Hi %s how are you?", $membername); // pass argument here
    echo $message . "<br/>";
    $membername = "";
}

mysql_* functions officially deprecated and removed in PHP 7.0.0. You should update your code with PDO or MySQLi.