【问题标题】:PHP str_replace in while loopPHP str_replace在while循环中
【发布时间】:2017-09-10 09:08:43
【问题描述】:

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

// 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 函数? 谢谢。

【问题讨论】:

  • mysql_query 已弃用。使用 mysqli 甚至更好的 PDO。
  • 修复所有软件需要很长时间。不过谢谢你的建议。
  • @MertA。你试过打印$row["member_name"]吗?它是否也一直打印相同的值?
  • @Difster 如果我不使用 str_replace 函数,它可以正常工作。

标签: php mysql loops while-loop str-replace


【解决方案1】:
    $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/>";

    }

【讨论】:

  • 抱歉,这不是问题所在。在这里重写代码时出错了。
  • @Mert A. 立即查看
  • 使用@Stefan Avramovic 解决方案
  • @Mert A. 检查我的答案
【解决方案2】:

您为此使用sprintf()

用作为参数传递的变量替换百分号 (%):

$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_* 函数在 PHP 7.0.0 中正式弃用和删除。你 应该使用 PDO 或 MySQLi 更新您的代码。

【讨论】:

    【解决方案3】:

    容易多了:

    $connect = mysql_query("SELECT * FROM members"); 
    while($icerik=mysql_fetch_array($connect)){
    
    echo $message =  "Hi" . $row["member_name"] . "how are you? <br/>";
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      相关资源
      最近更新 更多