ModX PDO SQL返回空数组

时间:2015-01-27 10:59:08

标签: pdo modx modx-revolution

我几乎从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);

}

但即使数据库中没有记录,我仍然会得到“其他”记录。发生。第echo "count " . count($r);行生成输出:count 0

有谁知道最新情况以及如何解决?

1 个答案:

答案 0 :(得分: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循环&amp;测试它是否还有任何数据。