如何在数组中选择数据库下一行?

如何在数组中选择数据库下一行?

问题描述:

我需要一个数组有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

你可以循环,直到的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


你并不需要重新每次执行查询,你永远只有一个“的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

,你也可以用这个SQL查询

委托这种治疗你的MySQL服务器
$sql = "SELECT DISTINCT(article_id) FROM article_category WHERE category_id = :category_id ORDER BY id DESC LIMIT 6"; 

希望它有帮助