ホームページ >バックエンド開発 >PHPチュートリアル >PDO は結果セットの数をどのように計算しますか?

PDO は結果セットの数をどのように計算しますか?

WBOY
WBOYオリジナル
2016-06-23 14:14:071053ブラウズ

有这样一段代码,怎么取也取不到结果集的数目....请各位大神看看...
$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 'fetch(PDO::FETCH_NUM);

echo $result[0] ; //そのように書かれていますか?
$stmt=$dbc->prepare('ログインログから * を選択');

$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());

上記には少し問題があります。 rowCount()) ;



LZ は $stmt=$dbc->prepare('select * from loginlog');
$rowsNum=$rows-> ;fetch(PDO ::FETCH_ASSOC);

print_r($rowsNum->rowCount());

上記には若干の問題があります。それは print_r($rows->rowCount()); です。非オブジェクト i でのメンバー関数 fetch() の呼び出し
$stmt=$dbc->prepare('select * from loginlog');
$rows=$stmt->execute(); $rows->fetch(PDO ::FETCH_ASSOC);
$rowsN=$rows->rowCount();
$stmt=$dbc->prepare('ログインログから * を選択'); $stmt->execute() ;

$rowsNum= $stmt->fetch(PDO::FETCH_NUM);

$stmt=$dbc->prepare('ログインログから * を選択'); $stmt->execute() ;
$rowsNum= $stmt->fetch(PDO::FETCH_NUM);
配列をエコーし​​ます。 。 。 rowCount(); が必要ですか?

$stmt=$dbc->prepare('ログインログから count(*) を選択');
$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 を返します。 object ステートメントによって影響を受ける行の数。

関連する 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 '
';

全体的なコードは次のようになりますが、ページでは常にエラーが報告されます
致命的なエラー: 非オブジェクトのメンバー関数 fetchColumn() の呼び出し これはなぜですか?

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

$rowsNum = $stmt-> fetchColumn();

$stmt=$dbc->prepare('ログインログから count(*) を選択');
$rowsNum = $rows->fetchColumn( );
このように書かれています... エラー~


この投稿は xuzuning によって最終編集されました: 2013-06-26 15:38:19

$stmt->execute();

$rowsNum = $ stmt- >fetchColumn();

$stmt->execute();

そうです、理由を教えてください。今後このような間違いをしないようにしたいです
PDO::prepare は $stmt である PDOStatement オブジェクトを返します

そして PDOStatement::execute は実行が成功したかどうかを示す論理値を返します
$ と書くとrows= $stmt->execute();
そうすると、$rows は true になります

もちろん、fetchColumn メソッドはないので、エラーが報告されます


まず、使い方だけでなく、マニュアルを読む必要がありますただし、プロトタイプ宣言の読み方も学びましょう
2 つ目は、エラー メッセージの読み方を学ぶ必要があります

PDO::prepare は、$stmt である PDOStatement オブジェクトを返します
そして、PDOStatement::execute は、実行が正しいかどうかを示す論理値を返します成功したかどうか
$rows=$stmt ->execute(); と書くと
その場合、$rows は単に true になります

もちろん、fetchColumn メソッドがないため、エラーが報告されます


最初は、マニュアルでは、使用方法だけでなく、プロトタイプ宣言の読み方も学びます
2 つ目は、エラー メッセージの読み方を学ぶことです

はい、はい、わかりました、ありがとう... 私は常にプロジェクト主導の方法で PHP を学習してきました。そして、問題が発生した場合にのみマニュアルを読みます...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。