为了账号安全,请及时绑定邮箱和手机立即绑定

Mysql选择结果作为文本变量

Mysql选择结果作为文本变量

PHP
江户川乱折腾 2022-10-28 15:44:36
我有这两个变量获取 SQL 长文本列 ( $results_text) 和另一个 ( $results_f2) 从用户获取信息:那是我的新代码:    <?php    $results = mysqli_query($conn, "SELECT rc.text2, rl.* FROM table_config AS rc JOIN table_list AS rl ON rc.user = rl.user WHERE rl.email = 'user@gmail.com'");    while($row1 = mysqli_fetch_array($results))    {      $text2 = $row1[0];      $name = $row1[3];      $role = $row1[4];      $company = $row1[6];      echo $text2 .= str_replace(":name:", $name, $text2);      echo $text2 .= str_replace(":role:", $role, $text2);      echo $text2 .= str_replace(":company:", $company, $text2);    }        mysqli_close($conn);    ?>它正在工作,但给了我很多废话,比如一个带有名称的 text2,另一个带有角色,另一个带有公司,然后最后一个替换了所有变量/字符串。
查看完整描述

1 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

内循环仅在外循环的第一次迭代期间工作。一旦你完成了从查询中获取结果,下次它就不会回到开头。


由于第二个查询只返回一行,因此您应该在循环之外只获取一次。


或者您可以在一个查询中简单地连接两个表。


$results = mysqli_query($conn, "

    SELECT tc.text1, tl.*

    FROM table_config AS tc

    CROSS JOIN (

        SELECT *

        FROM table_list AS tl

        WHERE tl.user = 'user'

        LIMIT 1) AS tl

    WHERE tc.user = 'user'");

您将获得 3 个输出,因为您正在回显每个替换。您应该进行所有替换,然后回显。


      $text2 .= str_replace(":name:", $name, $text2);

      $text2 .= str_replace(":role:", $role, $text2);

      $text2 .= str_replace(":company:", $company, $text2);

      echo $text2;

您还可以通过将模板和替换放入数组来一次完成所有替换。


$text2 = str_replace([":name:", ":role:", ":company:"], [$name, $role, $company], $text2);

echo $text2;


查看完整回答
反对 回复 2022-10-28
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信