2013-08-19 39 views
1

所以,我正在學習PHPMySQL,但我遇到了一個小問題。存儲和處理MySQL結果

我缺少一些信息,所以這將是對我很大的幫助=)

我做一個查詢針對我的數據庫,並得到一個結果。這個結果是我列出的所有圖像文件。

$fileSQL = $mysqli->query(" 
    SELECT * 
    FROM content 
    WHERE projID=$projectID  
"); 

所以,如果我想列出我的所有文件作爲我的網頁縮略圖我這樣做:

<?php while($row = $fileSQL->fetch_assoc()){ ?> 
    <img src="assets/<?=$row['contentFull']?>" id="thumbImg" 
    onclick="document.getElementById('mainImage').src=this.src" width="110px" height="62px"/>   
<?php } ?> 

現在,這工作得很好,當然。它循環遍歷所有行,同時爲每個行添加一個。

但是,我也有一個主要圖像,我需要顯示第一個拇指全部(在這個例子中,我使用contentFull拇指和全尺寸)。

現在,我怎樣才能得到第一行的contentFull,而不讓循環從第nr.2行開始?

並且一般而言;在這些情況下做什麼是最好的方法?首先將結果存儲到數組中,以便我可以輕鬆訪問它,或者執行此操作的「正常」方式是什麼? =)

我需要什麼:

  1. 做一個查詢
  2. 將主圖像(使用contentFull從我的SQL結果第一 圖像/內容)
  3. 然後畫中的全部影像所述 結果縮略圖(包括那些已經示出爲 主圖像的第一)預先

謝謝,且p租賃讓我知道如果你需要更多的信息=)

+1

舊金山,但很高興看到你正在學習mysqli_ *函數,而不是mysql_ *的 – Anigel

+1

儘管通過不使用參數化查詢否定他們 – allen213

+0

你是什麼意思的那個allen213? –

回答

1

一個簡單的方案就是要做到這一點:

<?php 
$first = null; 
while($row = $fileSQL->fetch_assoc()) { 
    if(!isset($first)) $first = $row; 
    ?> 
    <img src="assets/<?=$row['contentFull']?>" id="thumbImg" 
    onclick="document.getElementById('mainImage').src=this.src" width="110px" height="62px"/>   
<?php } ?> 

現在,你必須存儲在一個變量來使用,而不必存儲所有的第一行產生一個數組。如果由於某種原因,你想存儲陣列中的所有行,你可以簡單地這樣做:

<?php 
$rows = array(); 
while($row = $fileSQL->fetch_assoc()) { 
    $rows[] = $row; 
    //rest of code 
} 
?> 

然後,你可以通過引用$rows[0]

另一種選擇訪問第一行是不使用PHP來填充完整圖片。而是使用JavaScript調用來填充第一個圖像。

+0

謝謝,這將工作,但我希望有其他方法可以做到這一點?無法簡單地調用某種類型的$ row [0] ['contentFull'],以便從第一行結果中獲取該數據。 –

+0

如果你想這樣做,然後看看使用http://php.net/manual/en/mysqli-result.fetch-all.php – Pitchinnate

+0

或者你只需​​要將所有的行存儲在數組中,循環。 – Pitchinnate

0

我想你可以把你的第一張照片的while外循環:

$row = $fileSQL->fetch_assoc(); // the first picture 
if($row){ 
    // show first image if it exists 
    } 

while ($row = $fileSQL->fetch_assoc()) // etc. 

查看大圖也許代碼比別人不同,所以它可能是合理的。如果沒有,可以考慮定義一個函數,或者使用一個計數器(或者像Pitchinnate的answer這樣的標誌)。

+0

,但不會在進入while循環時跳過第一行嗎?因爲我已經在循環之外取出一行了? –

+0

是的,所以你需要完全處理這個案例。如果它是相同的,你可以爲此寫一個函數,但我認爲你會以不同於其他所有方式的方式顯示第一個圖像。 – Voitcus

+1

您可以使用'mysqli_data_seek()'http://www.php.net/manual/en/mysqli-result.data-seek.php重置搜尋 – Pitchinnate