FetchAll(PDO :: FETCH_ASSOC)没有返回任何内容

时间:2017-05-24 06:26:35

标签: php mysql pdo

我使用此功能来调用我的数据库

function get_prescriptionWith_4($ID){
    $sql = "SELECT prescriptions FROM tblprescriptions WHERE `ID`='$ID'";
    $query = $this->dbh->prepare($sql);
    $query->execute();
    $row = $query->fetchAll(PDO::FETCH_ASSOC));
    return @$row;
}

我的数据库表看起来像这样..

ID   |       prescription
1    |    Med  (gen) 20 -- #20/1X per day --morning--for  30 days/,
1    |    test (test) 23 -- #343/1X per day --morning and noon-- 120 days23/,   
          samp (rere) 44 -- #34/1X per day --morning-- 7 days44/, 
1    |    asd (asd) 22 -- #222/3X per day --morning noon and evening--30 days/,   
          qw (wq) 44 -- #222/3X per day --morning noon and evening--60 days/, 
          1233 (123) 21 -- #123213/1X per day --morning---  60 days/,

我想要实现的是加载具有相同ID的所有处方,因为行处方中有多个数据我使用explode来分隔数据,当我尝试使用Fetch(PDO::FETCH_ASSOC)时只返回第一个处方我认为使用fetchAll可能更好地从我的数据库中获取所有数据..

$pres_array3=$patient->get_prescriptionWith_4($ID);
$new_array3=explode(',',$pres_array3,-1);

但当我使用echo $new_array3检查时,如果fetchAll上有任何内容正在返回

2 个答案:

答案 0 :(得分:3)

1)您准备好的陈述错误/误用

awk -v s="CLEARED" '$3!=s{a[$4]=$0} $3==s{delete a[$4]} END{for (i in a) print a[i]}' file

2017-05-23T05:45:47 node-4 CRITICAL 104 alarm_text3

2)$sql = "SELECT prescriptions FROM tblprescriptions WHERE `ID` = :id"; $query = $this->dbh->prepare($sql); $query->execute([':id' => $ID]); 返回数组,因此$query->fetchAll(PDO::FETCH_ASSOC)不存在,它会抛出未定义索引$row['prescriptions']的警告。正确的版本是

prescriptions

答案 1 :(得分:0)

所以,因为fetchAll(PDO:ASSOC)没有给我任何东西......我使用这种方法代替..

$prescriptions = array();
    while($row = $query->fetch(PDO::FETCH_ASSOC)){
        $prescriptions[] = $row;
    }
return $prescriptions;

然后 $pres_array3=$patient->get_prescriptionWith_4($patientID);

<?php 
    foreach ($pres_array3 as $key => $value) {
       $prescription =  $value['prescriptions'];
       $new_array3=explode(',',$prescription,-1);
        foreach($new_array3 as $value) {    

?>
<input type="text" value="<?php echo $value?>"  />

<?php } } ?>

我使用多个循环的原因是因为在第一个循环中我得到所有数组数据,然后将其爆炸以分离数据然后再次循环,因为爆炸返回array而不是元素..