2016-04-13 5 views
0

私はちょうどmysql_別のエリアにPDOクエリブロックの再利用のベストプラクティス

からPDOにオーバー移行てる私はいくつかの有用なチュートリアルの方向に指摘されてきたが、私が提起見ていない1つの問題があります私は正しい方法でそれをしていることを確認したかった

1つのページ内の2つの異なる領域(異なるPHPコードブロック)の配列にドロップする同じ値を再利用します。どちらも、私はこのようなクエリを実行しています現時点では(隠し/などを隠されていない)メディアクエリに応じて異なる

をスタイリングされています

<?php 
$data = $pdo->query("SELECT * FROM sitelinks WHERE `show` = 'yes' ORDER BY `Order` ASC")->fetchAll(); 
foreach ($data as $links) 
{ 
echo "\n<li class=\"linkitem\"><a href=\"{$links['URL']}\">{$links['Text']}</a></li>"; 
    } 
    ?> 

だから私の理解では、私はその後、ロードすることができるはずということです$ links変数をページのどこかにループします。私はこのようにしています:

<?php 
foreach ($data as $links) 
{ 
echo "\n<li class=\"desktoplinkitem\"><a href=\"{$links['URL']}\">{$links['Text']}</a></li>"; 
} 
?> 

これは間違いありませんか?動作していますが、もう一度($data as $links)を使用するのは少し夢中です。続いて、本当にばかげた質問ですが、なぜ$data変数は$linksとして格納されなければならないのですか?それはちょうどforeach ($links)として実行することはできませんでしたか?

答えて

1

$data変数をこれらの2つの使用法の間で変更または破棄するコードを書き込んでいないと仮定すると、問題はありません。実際には、データを再取得するのではなく、再実行できるようにするためにランタイムが削減されます。

覚えておく必要があることは、->fetchAll()は、結果セットのすべての行を配列に戻すことです。あなたは->fetchAll()が完了すると好きなあなたが行うことができ、その後のからのあなたの配列、

2番目の質問:

foreachのは

foreach ($data as $links) 

配列$dataオーバープロセスと1つのoccuranceを返します(あなたのケースでは1行ずつ)。したがって、別の変数名を付ける必要があります。その名前は何でもかまいません。

あなたは、彼らは通常、アレイ上の各反復で返される単一のoccuranceのための元の配列と単数形のための複数を使用して、この

foreach ($rows as $row) 

foreach ($sitelinks as $sitelink) 

のように見えるもののために賢明な名前を使用している場合。

だから私はそうのようにコードを修正します:

<?php 
$sitelinks = $pdo->query("SELECT * 
          FROM sitelinks 
          WHERE `show` = 'yes' 
          ORDER BY `Order` ASC") 
       ->fetchAll(); 

foreach ($sitelinks as $sitelink) { 
    echo "\n<li class=\"linkitem\"><a href=\"{$sitelink['URL']}\">{$links['Text']}</a></li>"; 
} 
?> 

、アレイの二次利用を

<?php 
foreach ($sitelinks as $sitelink) { 
    echo '\n<li class=\"desktoplinkitem\"><a href=\"{$sitelink['URL']}\">{$sitelink['Text']}</a></li>"; 
} 
?> 
+0

誰かがdownvoteを説明しますか? – RiggsFolly

+0

私の投票ではなく、おそらく準備された声明を言及していないためです。 –

+0

'fetchAll()'は遅いので、私は個人的に 'fetch(PDO :: FETCH_ASSOC)'を使用します。 – Tom

関連する問題