1

MySQL で検索したデータを表示するにはどうすればよいですか?

このコードを試しましたが、常に次のエラーが表示されます。

「警告: 12 行目の C:\xampp\htdocs\FindFriend\resultFindFriend.php の foreach() に無効な引数が指定されました」

<?php

if(!isset($_POST['dataFriend'])){
    echo("no result");

}else {

    $find = $_POST['dataFriend'];
    $con = mysqli_connect('127.0.0.1','root','','test');
    $queryFindFriend = "SELECT fullname FROM members WHERE fullname LIKE '%".$find."%'";
    $friendResult = mysqli_query($con, $queryFindFriend);
    $rows = mysqli_fetch_assoc($friendResult);
    foreach($rows as $row)
    {
    ?>
        <div class="outputfindfriend">
        <?php echo $row;?>
        </div>
    <?php
    }   
}
?>
4

2 に答える 2

0

これはmysqli_fetch_assoc()、一度に 1 つの行をフェッチするために発生します。したがって、$rowsは配列ではなく単純な値です。

foreachより最近の PHP 5.4 以降のバージョンでは、mysqli の結果に対してのみ使用できます。

foreach ($friendResult as $row): ?>
    <div class="outputfindfriend">
    <?= $row['fullname'] ?>
    </div>
<?php endforeach;

foreach は一度に 1 行ずつ実行します。

PHP 5.4 より前のバージョンの PHP を使用している場合、これはこの方法では不可能です。

この問題を解決するには、ループのロジックを変更する必要があります。mysqli_fetch_assoc行がなくなると false を返すという事実を利用できます。forそのためwhile、代入ステートメントを含む に変更できます。$rowこのように、 false が割り当てられるまで出力されます。

このようなことをしてください:

while ($row = mysqli_fetch_assoc($friendResult))
{
?>
    <div class="outputfindfriend">
    <?php echo $row;?>
    </div>
<?php
}   

このようにして、行をフェッチしてから出力します。

于 2013-04-07T03:21:37.780 に答える