2016-11-05 17 views
1

我目前正在從事個人項目,我需要你的幫助。 大量的研究後,我似乎無法找到我的問題的妥善解決辦法(可能是因爲我不是很好的PHP開發 - 我仍然在學習)。如何將mysql結果存儲到具有與數據庫的一個連接的不同單個變量中?

好了,所以我需要從我的數據庫3個的職稱,並存儲在單個變量他們中的每一個。我需要他們成爲個人,因爲我想在我的網站的不同部分使用它們。 我已經設法做到這一點,但只有通過對數據庫做三個不同的查詢,我認爲它不好。有沒有辦法將一個查詢發送到數據庫並將它們一次存儲在不同的變量中? 我試圖用數組來做到這一點,雖然我足夠接近我似乎並沒有得到這個工作。

這裏是我的代碼:

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(); 
} 

因此,爲了得到這一個查詢運行我必須這樣做

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

你爲什麼要使用循環時,你只是讀取一行結果? – Barmar

+0

第二個查詢不應該是「LIMIT 1,1」,而第三個是「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'這樣的變量,但這不是一個好習慣。總是使用數組來存儲相同類型的數據 - 它更加靈活。 –

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']; 
    } 
} 

但我真的真的建議你使用一個數組。

相關問題