从远程数据库中检索数据时遇到了麻烦。使用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);
?>
答案 0 :(得分:0)
我认为您的代码按预期工作。我认为误导你的部分认为它不是$reponse->rowcount()
。
来自PHP文档,
PDOStatement :: rowCount()返回由相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE 语句影响的行数。
如果关联的PDOStatement执行的最后一条SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,无法保证所有数据库的此行为,并且不应依赖于便携式应用程序。
所以我认为您应该切换到不同的行计数方法,看看是否会改变计数。看看这些问题