2014-10-04 47 views
0

我需要一個數組有6個索引,
如何選擇行並檢查是否不在數組中推入? 如果陣列,然後選擇下一行,直到陣列有6個指標如何在數組中選擇數據庫下一行?

$data = array(); 

    for ($ii=0; $ii < 6; $ii++) { 
    $sql = "SELECT * FROM article_category WHERE category_id = :category_id ORDER BY id DESC"; 
    $stmt = $connect_db_article->prepare($sql); 
    $stmt->bindValue(':category_id', $category_id_array[$i]); 
    $stmt->execute(); 
    $article_category_row = $stmt->fetch(PDO::FETCH_ASSOC); 
    if (!in_array($article_category_row['article_id'], $data)) { 
     array_push($data, $article_category_row['article_id']); 

    } 
    } 
+1

對不起,但我不明白這個問題。你可以試着澄清一下「獲取最新的行並檢查數組中是否選擇下一個繼續查找不在數組中並推入數組」一點? – 2014-10-04 10:40:23

+0

感謝您的回覆,我更新了問題,我試着找到一個push數組,直到有6個索引,每次得到一行並檢查數組中的isset或不是,如果沒有推入,如果在數組中複製然後回到選擇下一個行 – user1775888 2014-10-04 10:45:53

回答

1

你可以循環,直到的sizeof($數據)== 6,類似;

$data = array(); 

$sql = "SELECT * FROM article_category WHERE category_id = :category_id ORDER BY id DESC"; 
$stmt = $connect_db_article->prepare($sql); 
$stmt->bindValue(':category_id', $category_id_array[$i]); 
$stmt->execute(); 
while(sizeof($data) < 6 && $article_category_row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    if (!in_array($article_category_row['article_id'], $data)) 
    array_push($data, $article_category_row['article_id']); 
} 
+0

但如何讓sql選擇下一行?這似乎保持相同的一個 – user1775888 2014-10-04 11:26:21

+0

@ user1775888嗯......? [$ stmt-> fetch()](http://php.net/manual/en/pdostatement.fetch.php)應該總是抓取下一行(如果有)。由於它在循環中被調用,它應該按順序獲取所有行。 – 2014-10-04 11:29:46

+0

非常感謝! – user1775888 2014-10-04 11:47:36

1


你並不需要重新每次執行查詢,你永遠只有一個「的article_id」您的$ data數組英寸
你也必須與嘗試保護您的代碼,趕上()
您可以使用此代碼嘗試:

$data = array(); 
$maxRow = 6; 
$cpt = 0 ; 
$sql = "SELECT * FROM article_category WHERE category_id = :category_id ORDER BY id DESC"; 
try { 
    $stmt = $connect_db_article->prepare($sql); 
    $stmt->bindValue(':category_id', $category_id_array[$i]); 
    $stmt->execute(); 
    while($article_category_row = $stmt->fetch(PDO::FETCH_ASSOC) && $cpt < $maxRow) { 
     if (!in_array($article_category_row['article_id'], $data)) { 
      array_push($data, $article_category_row['article_id']); 
      $cpt++; 
     } 
    } 
}catch(PDOException $pdoException) { 
    print $pdoException->getMessage(); 
} 
+0

但如何讓sql選擇下一行?這似乎保持選擇相同的一個 – user1775888 2014-10-04 11:25:57

+0

非常感謝! – user1775888 2014-10-04 11:49:59

0

,你也可以用這個SQL查詢

委託這種治療你的MySQL服務器
$sql = "SELECT DISTINCT(article_id) FROM article_category WHERE category_id = :category_id ORDER BY id DESC LIMIT 6"; 

希望它有幫助

相關問題