Предупреждение: неверный аргумент в php - PullRequest
0 голосов
/ 23 января 2019

В этом файле указан неверный аргумент ошибки для foreach. Кто-нибудь решит эту проблему. Я пытался много времени, но я не мог найти это, я не знаю, как решить это. Вот мой код:

 <?php
    include('connect.php'); 
    $query = "SELECT * FROM product";
    $result = mysqli_query($connect,$query);
    $output ='<table class="table table-stripped table-bordered">
    <tr><th>Product Name</th>
    <th>Product Type</th>
    <th>Product Rate</th>
    <th>Brand</th>
    <th>Edit</th>
    <th>Insert</th>
    </tr>';
    if(mysqli_num_rows($result)>0)
    {
        foreach (mysqli_num_rows($result) as $row) {
            $output .= '<tr>
                <td width="40%">'.$row["product_name"].'</td>
                <td width="40%">'.$row["product_type"].'</td>
                <td width="40%">'.$row["product_rate"].'</td>
                <td width="40%">'.$row["brand"].'</td>
                <td width="10%">
                    <button type="button" name="edit" class="btn btn-primary btn-xs edit" id="'.$row["id"].'">Edit</button>
                </td>
                <td width="10%">
                    <button type="button" name="delete" class="btn btn-danger btn-xs delete" id="'.$row["id"].'">Delete</button>
                </td>
            </tr>';
        }
    }

    else
    {
        $output .='<tr>
        <td colspan ="4" align="center"> No data Found</td>
        </tr>' ;
    }

    $output .= '</table>';
    echo $output;
     ?>

Ответы [ 4 ]

0 голосов
/ 23 января 2019

mysqli_fetch_assoc вернет строку в качестве ассоциативного массива, если вы хотите, чтобы полные строки были в качестве ассоциативного массива, вы должны использовать mysqli_fetch_all ($ res, MYSQLI_ASSOC);

0 голосов
/ 23 января 2019

Ошибка, которую вы сделали, заключается в том, что вы используете функцию num_rows в foreach. Я всегда предпочитаю использовать цикл while с выборкой.

while ($row = mysqli_fetch_assoc($result)) {
            $output .= '<tr>
                <td width="40%">'.$row["product_name"].'</td>
                <td width="40%">'.$row["product_type"].'</td>
                <td width="40%">'.$row["product_rate"].'</td>
                <td width="40%">'.$row["brand"].'</td>
                <td width="10%">
                    <button type="button" name="edit" class="btn btn-primary btn-xs edit" id="'.$row["id"].'">Edit</button>
                </td>
                <td width="10%">
                    <button type="button" name="delete" class="btn btn-danger btn-xs delete" id="'.$row["id"].'">Delete</button>
                </td>
            </tr>';
        }
0 голосов
/ 23 января 2019

mysqli_fetch_array - решение вашей проблемы. foreach требуется массив для его итерации, и более ранний метод предоставляет вам то же самое.

0 голосов
/ 23 января 2019

mysqli_num_rows функция возвращает число, а не массив.Вы, вероятно, хотите использовать mysqli_fetch_all :

foreach (mysqli_fetch_all($result) as $row) {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...