使用 foreach 循环的 mysqli_fetch_array

Shi*_*aby 2 php arrays mysqli

我有一个非常基本的表,名为“客户”,有四列:
ID(主要自动增量)
businessName
contactName
contactEmail

我这样称呼它:

$result = mysqli_query($con, "SELECT * FROM customers");
Run Code Online (Sandbox Code Playgroud)

并使用 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>";
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

a href="mailto:bill@microsoft.com"  
Run Code Online (Sandbox Code Playgroud)

当它到达 contactEmail 时链接。
如果我只想显示一个键或值而不是使用 foreach 该怎么办?
好像不能打电话

$row['contactEmail'] 
Run Code Online (Sandbox Code Playgroud)

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

$row['id']
Run Code Online (Sandbox Code Playgroud)

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

小智 5

是的!你可以这样添加:

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>";
}
Run Code Online (Sandbox Code Playgroud)