PDO仅提取单行

时间:2015-05-12 21:39:16

标签: php mysql pdo

我正在尝试使用从获取cat_id获取的Id获取所有行:

$doc = $results->fetch(PDO::FETCH_ASSOC);  

如果我只是使用:

$doc = $results->fetchAll(PDO::FETCH_ASSOC);  

它将单行提取为

但是,如果我使用:

Notice: Undefined index: doc_id in /Applications/MAMP/htdocs/dashboardr v3.1.7/catView.php on line 126

Notice: Undefined index: doc_title in /Applications/MAMP/htdocs/dashboardr v3.1.7/catView.php on line 126

我收到以下错误?

var_dump($doc);

但是如果我array(2) { [0]=> array(3) { ["doc_title"]=> string(5) "dsfsd" ["cat_no"]=> string(1) "4" ["doc_id"]=> string(2) "72" } [1]=> array(3) { ["doc_title"]=> string(14) "Adams Test Doc" ["cat_no"]=> string(1) "4" ["doc_id"]=> string(3) "120" } }

它确实返回值:

<?php include 'header.php'; ?>

<?php require_once '../db_con.php'; 

if(!empty($_GET['cat_id'])){
    $cat = intval($_GET['cat_id']);
try{
    $results = $dbh->prepare("SELECT doc_list.doc_title, doc_list.cat_no, doc_id FROM doc_list WHERE cat_no = ?");
    $results->bindParam(1, $cat);
    $results->execute();

    } catch(Exception $e) {
    echo $e->getMessage();
    die();
    }

    $doc = $results->fetch(PDO::FETCH_ASSOC);    
    if($doc == FALSE){

        echo '<div class="container">';
        echo "<img src='../img/404.jpg' style='margin: 40px auto; display: block;' />";
        echo "<h1 style='margin: 40px auto; display: block; text-align: center;' />Oh Crumbs! You upset the bubba!</h1>";
        echo '<a href="userList.php"  style="margin: 40px auto; display: block; text-align: center;">Get me outta here!</a>';
        echo'</div>';
        die();
    }
}

?>

<h3 class="subTitle"><i class="fa fa-file-text"></i> </span>Document List</h3>  

   <p><?php 

   var_dump($doc);

   echo '<a href="docView.php?doc_id='.$doc["doc_id"].'">'.$doc['doc_title'].'</a>' ?></p>


   I WANT ALL MY RESULTS LISTED HERE

</div>
</div>

我真的很困惑?

更新

*.tar.gz

1 个答案:

答案 0 :(得分:4)

因为使用fetch()总是会得到一行,所以你必须把它放到一个循环中,如下所示迭代所有行:

while($doc = $results->fetch(PDO::FETCH_ASSOC)) {
    //your code
}

使用fetchAll(),您可以将所有行同时放入一个单独的数组中,因此您必须遍历数组,例如。

$doc = $results->fetchAll(PDO::FETCH_ASSOC);  
foreach($doc as $v) {
    //your code
}