• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

请问pdo如何计算结果集的数目呢?

php 搞代码 3年前 (2022-01-23) 24次浏览 已收录 0个评论
文章目录[隐藏]

有这样一段代码,怎么取也取不到结果集的数目….请各位大神看看…
$stmt=$dbc->prepare(‘select count(*) from loginlog’);
$rows=$stmt->execute();
pageDivide($rows,10);
$result=$dbc->prepare(‘select * from loginlog order by logintime desc limit $sqlfirst,$shownu’);
$result->execute();
echo’一共有’.$rows.’条登录记录’;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
while($row=$result->fetch()){
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
}
echo ‘

用户名密码登录IP登录时间登录状态尝试次数在线状态
‘.$row[‘name’].’‘.$row[‘password’].’‘.$row[‘ip’].’‘.$row[‘logintime’].’‘.$row[‘status’].’‘.’1′.’‘.’在线’.’

‘;
echo ”;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;

回复讨论(解决方案)

$result = $stmt->fetch(PDO::FETCH_NUM);
echo $result[0] ; //这个才是

$result = $stmt->fetch(PDO::FETCH_NUM);
echo $result[0] ; //这个才是
请问那是这样写吗?
$stmt=$dbc->prepare(‘select * from loginlog’);
$rows=$stmt->execute();
$rowsNum=$rows->fetch(PDO::FETCH_NUM);

LZ应该是$stmt=$dbc->prepare(‘select * from loginlog’);
$rows=$stmt->execute();
$rowsNum=$rows->fetch(PDO::FETCH_ASSOC);
print_r($rowsNum->rowCount());

LZ应该是$stmt=$dbc->prepare(‘select * from loginlog’);
$rows=$stmt->query();
$rowsNum=$rows->fetch(PDO::FETCH_ASSOC);
print_r($rowsNum->rowCount());
上面的有点小问题,是print_r($rows->rowCount());

LZ应该是$stmt=$dbc->prepare(‘select * from loginlog’);
$rows=$stmt->query();
$rowsNum=$rows->fetch(PDO::FETCH_ASSOC);
9来源gaodai#ma#com搞@代~码$网搞gaodaima代码print_r($rowsNum->rowCount());
上面的有点小问题,是print_r($rows->rowCount());
Fatal error: Call to a member function fetch() on a non-object i
$stmt=$dbc->prepare(‘select * from loginlog’);
$rows=$stmt->execute();
$rowsNum=$rows->fetch(PDO::FETCH_ASSOC);
$rowsN=$rows->rowCount();

$stmt=$dbc->prepare(‘select * from loginlog’);
$rows= $stmt->execute();
$rowsNum= $stmt->fetch(PDO::FETCH_NUM);

$stmt=$dbc->prepare(‘select * from loginlog’);
$rows= $stmt->execute();
$rowsNum= $stmt->fetch(PDO::FETCH_NUM);
echo 一个array。。。要rowCount();吗?

$stmt=$dbc->prepare(‘select count(*) from loginlog’);
$stmt->execute();
$rowsNum=$stmt->fetch(PDO::FETCH_NUM); //返回一个数组
print_r($rowsNum);

或者这样:
$stmt=$dbc->prepare(‘select count(*) from loginlog’);
$stmt->execute();
$rowsNum = $stmt->fetchColumn();
echo $rowsNum;

int PDOStatement::rowCount ( void )

PDOStatement::rowCount() 返回上一个由对应的 PDOStatement 对象执行DELETE、 INSERT、或 UPDATE 语句受影响的行数。

如果上一条由相关 PDOStatement 执行的 SQL 语句是一条 SELECT 语句,有些数据可能返回由此语句返回的行数。但这种方式不能保证对所有数据有效,且对于可移植的应用不应依赖于此方式。

$stmt=$dbc->prepare(‘select count(*) from loginlog’);
$stmt->execute();
$rowsNum=$stmt->fetch(PDO::FETCH_NUM); //返回一个数组
print_r($rowsNum);

或者这样:
$stmt=$dbc->prepare(‘select count(*) from loginlog’);
$stmt->execute();
$rowsNum = $stmt->fetchColumn();
echo $rowsNum;

$stmt=$dbc->prepare(‘select count(*) from loginlog’);
$rows=$stmt->execute();
$rowsNum = $rows->fetchColumn();
pageDivide($rowsNum,10);
$result=$dbc->prepare(‘select * from loginlog order by logintime desc limit $sqlfirst,$shownu’);
$result->execute();
//if($stmt){
/*$result=mysql_query(‘select * from loginlog order by logintime desc ‘);
$total=mysql_num_rows($result);
pageDivide($total,10);
$result=mysql_query(“select * from loginlog order by logintime desc limit $sqlfirst,$shownu “);*/
echo’一共有’.$rowsNum.’条登录记录’;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
//while($tota=mysql_fetch_assoc($result)){
while($row=$result->fetch()){
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;
}
echo ‘

用户名密码登录IP登录时间登录状态尝试次数在线状态
‘.$row[‘name’].’‘.$row[‘password’].’‘.$row[‘ip’].’‘.$row[‘logintime’].’‘.$row[‘status’].’‘.’1′.’‘.’在线’.’

‘;
echo ”;
echo ‘

‘;
echo ‘

‘;
echo ‘

‘;

代码整体是这样的,但是页面老是报错
Fatal error: Call to a member function fetchColumn() on a non-object 这个是为什么呢?

$rows= $stmt->execute();
$rowsNum = $stmt->fetchColumn();

$rows= $stmt->execute();
$rowsNum = $stmt->fetchColumn();
$stmt=$dbc->prepare(‘select count(*) from loginlog’);
$rows=$stmt->execute();
$rowsNum = $rows->fetchColumn();
是这样写的呀…报错~

本帖最后由 xuzuning 于 2013-06-26 15:38:19 编辑

$stmt->execute();
$rowsNum = $stmt->fetchColumn();

$stmt->execute();
$rowsNum = $stmt->fetchColumn();
嗯嗯 这样是对了 谢谢你,可以和我说下是为什么吗?我好避免以后犯这样的错误

PDO::prepare 返回一个 PDOStatement 对象,就是你的那个 $stmt
而 PDOStatement::execute 返回的是一个逻辑值,表示执行成功与否
如果你写作 $rows=$stmt->execute();
那么 $rows 只是一个 true
当然也就没有 fetchColumn 方法了,于是就报错了

一是要看手册,不但要看用法,而且要学会看原型声明
二是要学会看错误信息

PDO::prepare 返回一个 PDOStatement 对象,就是你的那个 $stmt
而 PDOStatement::execute 返回的是一个逻辑值,表示执行成功与否
如果你写作 $rows=$stmt->execute();
那么 $rows 只是一个 true
当然也就没有 fetchColumn 方法了,于是就报错了

一是要看手册,不但要看用法,而且要学会看原型声明
二是要学会看错误信息

嗯嗯 懂了,谢谢你…我一直是项目驱动方式学习php的,遇到问题才去翻手册…


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:请问pdo如何计算结果集的数目呢?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址