Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Foreach$项目未显示_Php_Mysql_Foreach - Fatal编程技术网

Php Foreach$项目未显示

Php Foreach$项目未显示,php,mysql,foreach,Php,Mysql,Foreach,使用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>

使用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>
$sql='selectdomainfromtomainsuggestions';
$domains=mysqli_查询($link,$sql);//从表中获取域建议
域建议

您使用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>
$sql='selectdomainfromtomainsuggestions';
$results=mysqli_查询($link,$sql);//从表中获取域建议
域建议

foreach
需要一个iterable元素,也就是说,它有许多可以迭代的条目。这通常是一个数组,但也可以是实现
Iterable
接口的对象

运行
mysqli\u query
时得到的是一个资源。这只是MySQL结果集上的一个句柄。数据还没有在PHP中,MySQL只是给了你一个句柄,告诉你“好的,我已经为你准备好了结果,你需要的时候随时来获取”。调用
mysqli\u fetch\u assoc
从MySQL获取一个结果行。再叫一次会得到下一个,下一个等等。这不是一个可以迭代的过程,您可以继续调用
mysqli\u fetch\u assoc
,直到没有更多结果为止

$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>

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

我如何用foreach实现这一点?@Nick
foreach
需要一个iterable元素。您没有,因为您还没有从数据库中检索到所有数据;通过调用
mysqli\u fetch.*
一次只能获取一行数据。为什么它需要成为一个
foreach
?我正在阅读《使用PHP和MySQL构建自己的数据库驱动网站-第四版》一书,这就是它的教学方法。我不明白为什么它不起作用,我想在继续之前,在接下来的章节中使用并建立这个用法。