Привет, я очень новичок в PHP, потому что я только начал изучать это 2 дня назад! Я пытаюсь отобразить свою вторую таблицу должным образом в моем файле index.html, но я получаю эту ошибку: Недопустимый аргумент, предоставленный foreach () Взгляните
Любая помощь приветствуется
Класс
public class Category { public int Id{get;set;} public string Name {get;set;} } public class Product{ public int Id{get;set;} public int CategoryId{get;set;} public String Brand {get;set;} public String Name {get;set;} public decimal Price{get;set; }
index.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link href="css/bootstrap.min.css" rel="stylesheet"> <script src="js/bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="row"> <h3>PHP CRUD Grid</h3> </div> <div class="row"> <p> <a href="create.php" class="btn btn-success">Create</a> </p> <table class="table table-striped table-bordered"> <thead> <tr> <th>Id</th> <th>CategoryId</th> <th>Brand</th> <th>Name</th> <th>Barcode</th> <th>Price</th> </tr> </thead> <tbody> <?php include_once 'database.php'; $pdo = Database::connect(); $sql = 'SELECT * FROM product ORDER BY id DESC'; foreach ($pdo->query($sql) as $row) { echo '<tr>'; echo '<td>'. $row['id'] . '</td>'; echo '<td>'. $row['category_id'] . '</td>'; echo '<td>'. $row['brand'] . '</td>'; echo '<td>'. $row['name'] . '</td>'; echo '<td>'. $row['barcode'] . '</td>'; echo '<td>'. $row['price'] . '</td>'; echo '<td width=250>'; echo '<a class="btn" href="read.php?id='.$row['id'].'">Read</a>'; echo ' '; echo '<a class="btn btn-success" href="update.php?id='.$row['id'].'">Update</a>'; echo ' '; echo '<a class="btn btn-danger" href="delete.php?id='.$row['id'].'">Delete</a>'; echo '</td>'; echo '</tr>'; } ?> </tbody> </table> <div class="container"> <div class="row"> <h3>PHP CRUD Grid</h3> </div> <div class="row"> <p> <a href="createCategory.php" class="btn btn-success">Create</a> </p> <table class="table table-striped table-bordered"> <thead> <tr> <th>CategoryId</th> <th>Category Name</th> </tr> </thead> include_once 'database.php'; <?php $sql2 = 'SELECT * FROM category ORDER BY id DESC'; foreach ($pdo->query($sql2) as $row) { echo '<tr>'; echo '<td>'. $row['id'] . '</td>'; echo '<td>'. $row['category_name'] . '</td>'; echo '<td width=250>'; echo '<a class="btn" href="readCategory.php?id='.$row['id'].'">Read</a>'; echo ' '; echo '<a class="btn btn-success" href="updateCategory.php?id='.$row['id'].'">Update</a>'; echo ' '; echo '<a class="btn btn-danger" href="deleteCategory.php?id='.$row['id'].'">Delete</a>'; echo '</td>'; echo '</tr>'; } Database::disconnect(); ?> </tbody> </table> </div> </div> </body> </html>
Удалите второе:
include 'database.php';
или использовать:
include_once 'database.php';
для предотвращения двойной загрузки вашего файла базы данных.
Возможно, вы захотите рассмотреть вопрос об отключении и подключении снова
У вас есть 6- th
элемент в заголовке и 7 td
элементов в ваших строках. Попробуйте добавить th
в строку заголовка.
Это означает, что SQL-запрос не работает (PDO возвращает false, если запрос не работает). В manpage говорится:
Если вы не извлечете все данные в результирующем наборе до того, как вы выполните следующий вызов PDO :: query (), ваш вызов может завершиться неудачно. Вызовите PDOStatement :: closeCursor (), чтобы освободить ресурсы базы данных, связанные с объектом PDOStatement, перед тем как отправить следующий вызов PDO :: query ().
Изменить: не похоже, что это проблема – попробуйте добавить
echo '<pre>'.print_r($pdo->errorInfo(), true).'</pre>';
после этого для каждого цикла это должно выводить детали ошибки PDO.