0

使用 foreach 输出 mysql 表的内容时遇到问题。正在为 mysql 表中的每个条目打印表 (tr, td) 等,但是 td 和 /td 标记之间没有任何内容,每个 $item 都应该被回显。

$sql = 'SELECT domain FROM domainsuggestions'; 
$domains = mysqli_query($link, $sql);  // get domain suggestions from table
<table>
    <tr>
        <td>Domain Suggestions</td>
    </tr>   
    <?php foreach ($domains as $item): ?>
    <tr>
        <td><?php echo htmlspecialchars($item, ENT_QUOTES, 'UTF-8'); ?></td>
    </tr>
    <?php endforeach; ?>
</table>
4

2 回答 2

2

你使用 MySQL 的逻辑是完全错误的。您需要先执行查询,获取结果的资源 ID,然后循环遍历结果。

$sql = 'SELECT domain FROM domainsuggestions'; 
$results= mysqli_query($link, $sql);  // get domain suggestions from table
<table>
    <tr>
        <td>Domain Suggestions</td>
    </tr>   
    <?php while ($item = mysqli_fetch_assoc($results)): ?>
    <tr>
        <td><?php echo htmlspecialchars($item['domain '], ENT_QUOTES, 'UTF-8'); ?></td>
    </tr>
    <?php endwhile; ?>
</table>
于 2012-05-11T02:31:45.330 回答
0

foreach期望一个可迭代的元素,即具有许多可以迭代的条目的东西。这通常是一个数组,但也可以是一个实现Iterable接口的对象。

跑步时你得到的mysqli_query是一种资源。这只是对 MySQL 结果集的处理。数据还没有在 PHP 中,MySQL 只是给你一个句柄说“好的,我已经为你准备好了结果,你需要的时候来获取它们”。调用mysqli_fetch_assoc从 MySQL 获取一个结果行。再次调用它会得到下一个,下一个等等。这不是您可以迭代的过程,您可以继续调用mysqli_fetch_assoc直到没有更多结果。

这就是为什么foreach不起作用。

于 2012-05-11T03:01:28.440 回答