【问题标题】:ModX PDO SQL returns empty arrayModX PDO SQL 返回空数组
【发布时间】:2015-01-27 10:59:08
【问题描述】:

我几乎从 ModX RTFM 复制/粘贴了这个:

$results = $modx->query("SELECT * FROM `saved_jobs` WHERE `job_id` = $job_id AND `user_id` = $user");

if (!is_object($results)) {
   return 'No result!';
}
else {

    $r = $results->fetchAll(PDO::FETCH_ASSOC);
    echo $r;
    echo "<br>count " . count($r);
    print_r($r);

}

但即使数据库中没有记录,我仍然会出现“else”。 echo "count " . count($r); 行产生输出:count 0

有谁知道发生了什么以及如何解决它?

【问题讨论】:

    标签: pdo modx modx-revolution


    【解决方案1】:

    如果您的查询成功,您仍然使用您的第一条语句创建一个对象。

    看看 [也来自文档]:

    $result = $modx->query("SELECT * FROM modx_users WHERE id='blah'");
    
    echo '<pre>'; var_dump($result); echo '</pre>';
    
    if (!is_object($result)) {
       return 'No result!';
    }
    else {
       $row = $result->fetch(PDO::FETCH_ASSOC);
       return 'Result:' .print_r($row,true);
    }
    

    你要做的是找出对象是否真的包含一个结果集:

    $result = $modx->query("SELECT * FROM modx_users WHERE id='1'");
    
    echo '<pre>'; var_dump($result); echo '</pre>';
    
    if (!is_object($result)) {
      return FALSE;
    }
    
    if(sizeof($result) > 0){
    
      while($row = $result->fetch(PDO::FETCH_ASSOC)){
        echo'Result:' .print_r($row,true);
      }
    
    }
    

    因此您可以测试 $result 变量的大小,或者只运行 while 循环并测试它是否也有任何数据。

    【讨论】:

      猜你喜欢
      • 2014-02-02
      • 2017-01-19
      • 2013-04-21
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 2015-01-30
      • 1970-01-01
      相关资源
      最近更新 更多