-2

mysql_queryでは、次のようにしてクエリが実行されたかどうかを確認できます。

$query = $yourdbconnection->fetch_array(mysql_query("SELECT * FROM tbl_name"));
if ($query){ // query is working }
else { // query is not working }

PDOでは、次のようなことをしています。

$query = $yourdbconnection->query("SELECT * FROM tbl_name");
$fetchquery = $query->fetchAll();
if ($fetchquery) { // query is working}
else { // query not working}

私のコードは効果的ですか?ifステートメントは正確に何をしているのですか?それはそれがしていたのと同じことをしているのmysql_queryですか?クエリが0行を返しているかどうかを確認するにはどうすればよいですか?

[編集]

問題の回避策としてこれらの解決策を見つけました

  1. を使用して$stmt->fetch()

    prepare($ sql); $ stmt-> execute();
    if ($data = $stmt->fetch()) {
        do {
            echo $data['model'] . '<br>';
        } while ($data = $stmt->fetch());
    } else {
        echo 'Empty Query';}
    
    ?>
  2. 行数をカウントする別のクエリを追加するこの回答を参照してください

しかし、私はまだより良い解決策を探しています

4

2 に答える 2

0

クエリが実行されたかどうかを確認するには、常識が示唆するように、PDOを例外モードに設定することをお勧めします。あなたはこのようにそれを行うことができます:

$dbh = new PDO('mysql:host=localhost;dbname=db', 'user', 'pass');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

クエリがPDOで値を返したかどうかを確認する最良の方法については、次のようにSELECT COUNT(*) FROM tableクエリを実行することをお勧めします。

<?php
$query = $dbh->query('SELECT COUNT(*) FROM table');
if ($query->fetchColumn() != 0) {
    /* Query has result(s) */
    $query = $dbh->query('SELECT * FROM table');
    /* ... */
} else {
    /* Query has no results */
}
?>

他にご不明な点がございましたら、お気軽にお問い合わせください。

于 2013-03-10T18:22:54.650 に答える
-1

あなたの投稿には2つの質問があります。

1)クエリがPDOで値を返したかどうかを確認するための最良の方法は何ですか?

戻り値を確認する

2)SQLクエリがPDOで実行されたかどうかを確認する方法

タグwikiで説明されているように、PDOを例外モードに設定します

ちなみに、"SELECT * FROM tbl_name"クエリには。fetchAll()の代わりに使用することをお勧めしますfetch()

于 2013-03-10T17:58:36.277 に答える