私はPHPを学ぶために開始し、私は私のスクリプトで二回foreach
を使用しようとすると、私はこのエラーを取得し、この問題を持っている:なぜ私は1ページで2回foreachを使用できないのですか?
"Notice: Undefined variable: pdo in C:\MAMP\htdocs\blog\app\Database.php on line 29 Fatal error: Uncaught Error: Call to a member function query() on null in C:\MAMP\htdocs\blog\app\Database.php:34 Stack trace: #0 C:\MAMP\htdocs\blog\app\Table\Article.php(15): App\Database->query('\r\n SELEC...', 'App\Table\Artic...') #1 C:\MAMP\htdocs\blog\pages\home.php(10): App\Table\Article::getLast() #2 C:\MAMP\htdocs\blog\public\index.php(20): require('C:\MAMP\htdocs\...') #3 {main} thrown in C:\MAMP\htdocs\blog\app\Database.php on line 34"
しかし、ときに私はそれが正常に動作しますforeachの1時間を使用しています。 この私が使用するコードです:
<div class="row">
<div class="col-sm-4">
<ul>
<?php foreach(\App\Table\Categorie::all() as $categorie): ?>
<li><a href="<?= $categorie->getUrl(); ?>"><?= $categorie->name;?></a></li>
<?php endforeach; ?>
</ul>
</div>
<div class="col-sm-6">
<?php foreach(\App\Table\Article::getLast() as $post): ?>
<?php endforeach; ?>
</div>
public static function getLast()
{
return App::getDb()->query("
SELECT articles.id_article, articles.nom_article, articles.object, articles.photo, category.name as categorie
FROM articles
LEFT JOIN category
ON category_id = category_category_id
", __CLASS__);
}
データベース
enter code here
public function query($statement, $class_name, $one = false)
{
$req = $this->getPDO()->query($statement);
$req->setFetchMode(PDO::FETCH_CLASS, $class_name);
if($one)
{
$data = $req->fetch();
}
else
{
$data = $req->fetchAll();
}
return $data;
}'
機能すべて
private static $table = 'category';
public static function all()
{
return App::getDb()->query("
SELECT *
FROM " .self::$table ."
", __CLASS__);
}
はあなただけ2回目でみました –
database.phpでファイル内にありますforeachループ?私はあなたが問題はforeachがデータベースからデータを取得するために使用しているクエリをループしているとは思わない。 – sT0n3
最初の 'foreach'の後であなたの接続を(' null'に割り当てて)閉じて、次に 'foreach'のために接続していないようです。これはあなたがあなたがそれを細分化したあなたの完全なコードですか? – EhsanT