6

PHP で PDO を使用して結果セットが空かどうかを確認するにはどうすればよいですか?

$SQL = "SELECT ......... ORDER BY lightboxName ASC;";
$STH = $DBH->prepare($SQL);
$STH->bindParam(':member_id', $member_id);
$STH->execute();
$STH->setFetchMode(PDO::FETCH_ASSOC);

while($row = $STH->fetch()) {
    $lightbox_name = $row['lightboxName'];
    $lightbox_id = $row['lightboxID'];
    echo '<option value="'.$lightbox_id.'">'.$lightbox_name.'</option>';
}

私はこのようにしていた:

$result = mysql_query("SELECT ...... ORDER BY lightboxName ASC;");
if(!$result) { echo 'No results found!'; }

しかし、PDO とプリペアド ステートメントを使い始めたばかりで、チェック$STHが期待どおりに機能しないようです。常に価値があります。

4

3 に答える 3

8

私は使用しようとしますrowCount()

$rows_found = $STH->rowCount();

しかし、マニュアルによると:

関連する PDOStatement によって実行された最後の SQL ステートメントが SELECT ステートメントであった場合、一部のデータベースは、そのステートメントによって返された行数を返すことがあります。ただし、この動作はすべてのデータベースで保証されているわけではなく、移植可能なアプリケーションに依存するべきではありません。

うまくいかない場合は、マニュアルに記載されている別の方法を使用できます。

もちろん、ループの前に変数を設定し、whileループで変更して、ループの後に値を確認することもできます...

于 2012-09-14T17:48:09.400 に答える
0

これが機能するコードです。最後に、数時間調べていくつかの回答を組み合わせた後、ここで実際に select ステートメントのカウントを返すものがあります。SQL は select ステートメントであり、明らかに $username1 はユーザー名のテキスト ボックスのポストです。$password1 はユーザー名の設定と同じです。それ以外は、私の変数を自分の変数に置き換えるだけで、それを機能させるために必要なものがすべて揃っているはずです。ここで欲しいものを正確に取得しようとしている間に検索したので、これが何人かの人々の時間を節約することを願っています. この解決策は、select ステートメントがあり、それが何かを返すことに基づいて続行または停止できるようにしたい場合のためのものです。

SQL = 'SELECT * from Users WHERE Username = :Username AND Password = :Password';
STH = $conn->prepare($SQL);
STH->bindParam(':Username', $username1);
STH->bindParam(':Password', $password1);
STH->execute();
STH->setFetchMode(PDO::FETCH_ASSOC);


row_count = $STH->rowCount();
于 2014-12-11T11:00:00.767 に答える
0

変数に関する情報をダンプするだけです。

var_dump($STH)

編集

私はちょうど質問を得ました。rowCount()そのための機能があります。行数に使用 $STH->rowCount();してから比較してください。

于 2012-09-14T17:39:44.657 に答える