0

foreachを使用してmysqlテーブルの内容を出力するのに問題があります。テーブル(tr、td)などはmysqlテーブルのエントリごとに出力されますが、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から1つの結果行を取得します。もう一度呼び出すと、次が取得され、次のようになります。これは反復できるプロセスmysqli_fetch_assocではなく、結果がなくなるまで呼び出しを続けることができます。

そのため、foreach機能しません。

于 2012-05-11T03:01:28.440 に答える