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

Foreach 循环不会根据列名回显正确的文本

Foreach 循环不会根据列名回显正确的文本

PHP
德玛西亚99 2021-12-03 15:24:06
我的数据库中有 2 个表。表tableA看起来像这样: taid | tanum | tarelation---------------------------  30  |  22   |  101  31  |  88   |  101表格tableB如下所示: tbid | tbnum | tbrelation---------------------------  1   |  10   |  101  2   |  20   |  101这是我的代码:<?php$columns = [];$stmt = $conn->prepare("    SELECT tanum FROM tableA    UNION ALL    SELECT tbnum FROM tableB;  ");$stmt->execute();$result = $stmt->get_result();while($row = $result->fetch_object()) {  $columns[] = $row;}$stmt->close();?><?php foreach($columns as $column): ?>    <?php if ($column->tanum): ?>        <div><?php echo $column->tanum; ?>tanum</div>    <?php elseif ($column->tbnum): ?>        <div><?php echo $column->tbnum; ?>tbnum</div>    <?php endif; ?><?php endforeach; ?>所以这是我想要达到的结果:22tanum88tanum10tbnum20tbnum但这是我根据我当前的代码得到的结果:22tanum88tanum10tanum20tanum如您所见,基于if statement, 如果$column->tanum被回显,则该词tanum应该出现在它之后;如果$column->tbnum被回显出来,那么单词tbnum应该出现在它之后。但相反,只tanum显示单词。代码有什么问题?请帮忙,谢谢
查看完整描述

2 回答

?
慕侠2389804

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

 aUNION中的列名是由第一次选择的列名设置的,因此您永远不会看到$column->tbnum值。要解决此问题,您可以将第二列添加到作为列名称的选择中。例如:


$columns = [];

$stmt = $conn->prepare("

    SELECT tanum, 'tanum' AS cname FROM tableA

    UNION ALL

    SELECT tbnum, 'tbnum' FROM tableB;

  ");

$stmt->execute();

$result = $stmt->get_result();

while($row = $result->fetch_object()) {

  $columns[] = $row;

}

$stmt->close();

?>


<?php foreach($columns as $column): ?>

    <div><?php echo $column->tanum . $column->cname; ?></div>

<?php endforeach; ?>


查看完整回答
反对 回复 2021-12-03
?
慕森王

TA贡献1777条经验 获得超3个赞

你需要重构你的代码。


<?php

$columns = [];

$stmt = $conn->prepare("

    SELECT tanum, 'a' as ident FROM tableA

    UNION ALL

    SELECT tbnum, 'b' as ident FROM tableB;

  ");

$stmt->execute();

$result = $stmt->get_result();

$i = 0;

while($row = $result->fetch_object()) {

  $columns[$i]['tanum'] = $row['tanum'];

  $columns[$i]['ident'] = $row['ident'];

  $i++;

}

$stmt->close();

?>


<?php foreach($columns as $column): ?>

    <?php if ($column['ident']=='a') ?>

        <div><?php echo $column['tanum']; ?>tanum</div>

    <?php elseif ($column['ident']=='b') ?>

        <div><?php echo $column['tanum']; ?>tbnum</div>

    <?php endif; ?>

<?php endforeach; ?>


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 169 浏览

添加回答

举报

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