2016-11-05 4 views
1

私は現在個人的なプロジェクトに取り組んでおり、あなたの助けが必要です。 多くの研究の後、私は問題に適切な解決策を見つけることができませんでした(おそらく、私は非常に良いPHP開発者ではない - 私はまだ学んでいます)。databseへの1つの接続で異なる個々の変数にmysql結果を格納するにはどうしたらいいですか?

私はデータベースから3つのポストタイトルを取得し、それぞれを個々の変数に格納する必要があります。自分のウェブサイトのさまざまな部分でそれらを使いたいので、私はそれらを個人にする必要があります。 私はこれを行うことができましたが、私は悪いと思うdatabseに3つの異なるクエリを行うことによってのみです。 1つのクエリをデータベースに送り、別の変数の中にそれらを一度に格納する方法はありますか? 私は配列でこれをやろうとしましたが、私は十分に近くでしたが、私はこの作業をしていないようでした。ここで

は私のコードです:

try { 
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 0,1'); 
    $sslider_title1=''; 
    while($row = $stmt->fetch()){ 
     $sslider_title1 = $row['postTitle']; 
    } 
} 
catch(PDOException $e) { 
    echo $e->getMessage(); 
} 
try { 
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 1,2'); 
    $sslider_title2=''; 
    while($row = $stmt->fetch()){ 
     $sslider_title2 = $row['postTitle']; 
    } 
} 
catch(PDOException $e) { 
    echo $e->getMessage(); 
} 
try { 
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 2,3'); 
    $sslider_title3=''; 
    while($row = $stmt->fetch()){ 
     $sslider_title3 = $row['postTitle']; 
    } 
} 
catch(PDOException $e) { 
    echo $e->getMessage(); 
} 

だから、これは1つのクエリで実行している得るために、私は

try { 
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 0,3'); 
    $sslider_title1=''; 
    $sslider_title2=''; 
    $sslider_title3=''; 
    while($row = $stmt->fetch()){ 
     \\ This is the part that I can't seem to solve :P 
    } 
} 
+0

1つの結果行をフェッチしているときに、なぜループを使用していますか? – Barmar

+0

2番目のクエリは 'LIMIT 1,1 'で、3番目のクエリは' LIMIT 2,1'でなければなりませんか? – Barmar

+0

私は次のスライドが次の3つのポストタイトルの名前を取得するようにループする必要があるので、現時点では "ラフ"バージョンを構築して、その動作と仕上げを確認します。うん、限界が間違っていた、私も後で見つけた。 –

答えて

3

を行う必要がありますしてください、そのような名前を持つ変数を使用しないでください。あなたが必要なもの はarrayです:

$titles = array(); 
try { 
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 0,3'); 
    while($row = $stmt->fetch()){ 
     $titles[] = $row['postTitle']; 
    } 
} 

は、次に、あなたのコード内であなたがタイトルごとに

echo $titles[0]; 
echo $titles[1]; 
echo $titles[2]; 

を使用することができます。

+0

ありがとう!それは魅力のように働く。変数名に何が間違っていますか?私はあなたが何を意味するのか分かりません!ありがとうございました! –

+1

もちろん、 '$ var1、$ var2、$ var3'のようなvarsを使うことはできますが、それは良い方法ではありません。常に同じ種類のデータを格納するために配列を使用します。より柔軟です。 –

1

あなたが変数に格納したくない場合は、これはあなたの答えのようになります。あなたも、あなたはまだループを使用して取得しますどのように多くの結果がわからない場合

try { 
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 0,3'); 
    $sslider_title1=''; 
    $row = $stmt->fetch() 
    $sslider_title1 = $row['postTitle']; 

    $sslider_title2=''; 
    $row = $stmt->fetch() 
    $sslider_title3 = $row['postTitle']; 

    $sslider_title3=''; 
    $row = $stmt->fetch() 
    $sslider_title3 = $row['postTitle']; 

} 

try { 
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 0,3'); 

    for($i=0;$row = $stmt->fetch();$i++){ 
     $sslider_title{$i}=$row['postTitle']; 
    } 
} 

しかし、私は本当にあなたが配列を使用することをお勧めします。

関連する問題