【问题标题】:mysqli_fetch_array using a foreach loopmysqli_fetch_array 使用 foreach 循环
【发布时间】:2017-04-01 08:49:03
【问题描述】:

我有一个非常基本的表,名为“客户”,有四列:
ID(主要自动增量)
企业名称
联系人姓名
联系邮箱

我称之为:

$result = mysqli_query($con, "SELECT * FROM customers");

并且正在使用 mysqli_fetch_array 通过 foreach 循环将其显示在页面上:

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{    
    echo "<tr>";
    foreach ($row as $value) {
        echo "<td>" . $value . "</td>";
    }
    echo "<td><a href='updateform.php?id=" . $row['id'] . "'>Edit</a></td>";
    echo "</tr>";
}

这会给你一个像这样的数组:

Array ( [id] => 1 [businessName] => Microsoft [contactName] => Bill Gates [contactEmail] => bill@microsoft.com ) Array ( [id] => 2 [businessName] => Amazon [contactName] => Jeff Bezos [contactEmail] => jeff@amazon.com ) 

是否可以根据它们所在的列(技术上现在在数组中的位置)以不同的方式显示结果?我想做一个

a href="mailto:bill@microsoft.com"  

链接到contactEmail。
如果我只想显示一个键或值而不是使用 foreach,该怎么办?
似乎无法调用

$row['contactEmail'] 

在 foreach 循环中 这让我很困惑,因为我可以在下面创建一个指向

的链接
$row['id']

如果有人对如何做到这一点有任何想法,或者如果有更好的方法来显示这些信息,我愿意接受建议,因为我不太擅长编程,尤其是 PHP。

【问题讨论】:

  • $row['contactEmail'] 应该可以正常工作。你遇到了什么错误?
  • 检查您写的 'contactEmail' 完全正确,因为它存储在数据库中。根据文档,它区分大小写。
  • 你也可以试试mysqli_fetch_assoc()link,这肯定会给你一个可以访问元素的数组。
  • 我可能会摆脱那个内部 foreach,因为您只有 4 列 - 明确写出您要显示的每一列会更清楚。

标签: php arrays mysqli


【解决方案1】:

是的,您可以直接使用foreach 循环来mysqli_fetch_array 检索数据。像下面这样:

<?php
  $result = mysqli_query($con, "SELECT * FROM customers");
?>
<table>
    <tr>
        <td>Business Name</td>
        <td>Contact Name</td>
        <td>#</td>
    </tr>
    <?php
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
    {    
        echo "<tr>";
            echo "<td>".$row['businessName']."</td>";       
            foreach ($row as $key => $value) {
                $newValue = $key == "contactEmail" ? '<a href="mailto:'.$mailUrl.'">'.$value.'</a>' : $value;
                echo "<td>" . $newValue . "</td>";         
            }
            echo "<td><a href='updateform.php?id=" . $row['id'] . "'>Edit</a></td>";
        echo "</tr>";
    } 
    ?>
</table>

【讨论】:

    【解决方案2】:

    是的!你可以像这样添加:

    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
    {    
        echo "<tr>";
        foreach ($row as $key => $value) {
            if($key == "contactEmail"){
              $mailUrl = "mailto:".$value;
              echo "<td><a href=".$mailUrl.">".$value."</a>";
            }
            else{
              echo "<td>" . $value . "</td>";
            }
        }
        echo "<td><a href='updateform.php?id=" . $row['id'] . "'>Edit</a></td>";
        echo "</tr>";
    }
    

    【讨论】:

      猜你喜欢
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      相关资源
      最近更新 更多