如何获取foreach循环的第一列/ td值

时间:2017-12-23 12:02:30

标签: php arrays mysqli html-table associative-array

我想获取我想用来生成网址的行的ID。 我正在使用以下代码生成表行。

<?
    $sql="SELECT pID,pName,pBudget,pRate FROM projects ORDER BY id";
    $result=mysqli_query($con,$sql);
    $projects = array();
    while($row = mysqli_fetch_assoc($result))
    {
        $projects[] = $row;
    }
    foreach ($projects as $row) 
        { 
            echo "<tr>";
            foreach ($row as $element)
            {
                echo "<td>".$element."</td>";               
            }
            echo "<td class=\"actions\">
                    <a href=\"project.php?pID=$element[0]\">
                    Go to Project
                    </a>
                </td>";
            echo "</tr>";
        }

?>

除行的最后一个<td>外,所有工作正常。 (不确定我使用的是正确的措辞。) 我们说我的数据库表行是

pID   |     pName      | pBudget | pRate
-----------------------------------------
12345 | Create Website | 250     | hourly 

然后我在我的页面中获取这样的表行

<tr>
    <td>12345</td>
    <td>Create Website</td>
    <td>250</td>
    <td>hourly</td>
    <td><a href="project.php?pID=h">Got to project</a></td>
</tr>

为什么上一个<td>没有pID值&#39; 12345&#39;为什么有&#39; h&#39; ? 我想要最后一个<td>

<td><a href="project.php?pID=12345">Got to project</a></td>

2 个答案:

答案 0 :(得分:3)

  

为什么最后一个没有pID值'12345'以及为什么有'h'?

因为$element循环结束后foreach的价值是每小时。该字符串的第一个符号是h

正确的版本是:

echo ".....<a href=\"project.php?pID={$row['pID']}\">

使用fetch_assoc函数。

答案 1 :(得分:0)

<?php
$sql="SELECT pID,pName,pBudget,pRate FROM projects ORDER BY id";
$result=mysqli_query($con,$sql);
while($row = mysqli_fetch_assoc($result))
{
    echo "<tr>";
    echo "<td>".$row['pName']."</td>";
    echo "<td>".$row['pBudget']."</td>";
    echo "<td>".$row['pRate']."</td>";
    echo "<td class='actions'>
                <a href='project.php?pID=$row['pID']'>
                Go to Project
                </a>
            </td>";
        echo "</tr>";
}
?>