PHP PDO mysql计数行返回

时间:2012-01-22 00:19:48

标签: php mysql pdo

有很多问题,我做了很多研究。但是,我仍然想知道我是否正确这样做。

这是我的陈述(我简化了):

    try {
        $stmt = $pdc_db->prepare("SELECT * FROM table WHERE color = :color"); 
        $stmt->bindValue(':color', $selected_color);
        $stmt->execute(); 
        $color_query = $stmt->fetchAll();
    } catch(PDOException $e) { catchMySQLerror($e->getMessage()); } 

现在,我正在使用以下内容查看是否返回了任何结果:

if (count($color_query) > 0) {

这样可行,但是...... SELECT语句只返回一个结果。所以现在要访问结果中的东西,我使用的是$ color_query [0] [colorname]。我知道这是因为我使用的是fetchAll(),但我真的想要使用fetch()

但是如果我只使用fetch(),我就失去了count()的能力,这对我来说非常简单。我知道我可以单独查询并检查SELECT COUNT(*)的结果,但这似乎更多工作(为每个查询设置两个单独的查询)

必须有一种方法,在PHP中使用带有mySQL的PDO来检查fetch()是否返回了结果?

2 个答案:

答案 0 :(得分:4)

在execute()之后

$stmt->rowCount(),但不能与所有数据库一起使用...尝试使用MySQL,看看你得到了什么。

答案 1 :(得分:0)

您可以使用fecth执行此操作,如果没有结果返回,则fecth将返回false。

if ($row = $stmt->fetch()) {
     //get the first row of the result.
     //....
}