PDO查询没问题,但没有提供最终结果

时间:2015-08-07 21:52:19

标签: php mysql pdo

从远程数据库中检索数据时遇到了麻烦。使用PDO访问数据库是可以的,我在debug.print中使用rowcount,它会返回几次出现,但代码似乎在提取时停止

        $arr = $reponse->fetchAll(PDO::FETCH_ASSOC);        

以下是您自己查看的链接:http://bacly.fr/baclymphp/getTournois.php

我用另一个db做了一件事,具有相同的代码功能,它给了我结果

http://bacly.fr/todophp/www/php/getTodo.php

这是我的getTournois.php代码:

<?php
require("config.php");

    $query="Select t1.tournois_id as tournois_id,t1.tournois_title as tournois_title, t1.tournois_date_debut as tournois_date_debut, t1.tournois_date_fin as tournois_date_fin, t1.tournois_date_limite as tournois_date_limite, coalesce(t2.tournois_inscriptions,0) as tournois_inscriptions, t1.tournois_description as tournois_description,  t1.tournois_simple as tournois_simple, t1.tournois_double as tournois_double, t1.tournois_mixte as tournois_mixte ";
    $query.= " From ";
    $query.= " (select t.tournois_id AS tournois_id, t.tournois_title AS tournois_title, t.tournois_date_debut AS tournois_date_debut, t.tournois_date_fin AS tournois_date_fin, t.tournois_date_limite AS tournois_date_limite, t.tournois_description as tournois_description, t.tournois_simple as tournois_simple, t.tournois_double as tournois_double, t.tournois_mixte as tournois_mixte FROM jnew_tournois_tournois t";
    $query.=" order by tournois_date_limite DESC) t1";
    $query.= " left join";
    $query.= " (select count(ti.tournois_inscriptions_id) as tournois_inscriptions,ti.tournois_inscriptions_tid as tournois_id from jnew_tournois_tournois_inscriptions  ti) t2";
    $query.= " ON t1.tournois_id = t2.tournois_id order by t1.tournois_date_limite desc";

    debug.print($query);

    try
    {
        $bdd = new PDO($db_config['SGBD'] .':host='. $db_config['HOST'] .';dbname='. $db_config['DB_NAME'], $db_config['USER'], $db_config['PASSWORD'], $db_config['OPTIONS']);
        $reponse = $bdd->prepare($query);
        $reponse->execute();
        debug.print("rowcount");
        debug.print($reponse->rowcount());

        if ($reponse->rowcount() >0){
            debug.print('fetching');
            $arr = $reponse->fetchAll(PDO::FETCH_ASSOC);        
            debug.print($arr);

        }

    }
    catch(Exception $e)
    {
        // En cas d'erreur, on affiche un message et on arrête tout
        $result.=$query . "<br>" . $e->getMessage();
        debut.print($result);   
    }
    $bdd=null;

echo $result = json_encode($arr);

?>

1 个答案:

答案 0 :(得分:0)

我认为您的代码按预期工作。我认为误导你的部分认为它不是$reponse->rowcount()

来自PHP文档,

  

PDOStatement :: rowCount()返回由相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE 语句影响的行数。

     

如果关联的PDOStatement执行的最后一条SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,无法保证所有数据库的此行为,并且不应依赖于便携式应用程序。

所以我认为您应该切换到不同的行计数方法,看看是否会改变计数。看看这些问题

How to get the number of rows grouped by column?

Row count with PDO