最近まで私はmysql_real_escape_string()
を使用してデータベースにSQLクエリを作成する前にほとんどの変数を修正していました。友人は代わりに私はPDOの準備文を使うべきだと言ったので、それらについて少し読んだら、今私はそれらに切り替えるつもりです。Selectステートメントから効率的に行数を取得
これまでのところ、切り替え時に1つの問題が発生しました。これは、SELECT
ステートメントによって返される行数をカウントしています。場合によっては私のコードで、私はSQLクエリを実行し、SELECT
ステートメントから返された行の数を数えます。結果セットが返されたかどうかによって、私は別のアクションをとるでしょう。時々、私はそれから結果セットを使用する必要があります。 MySQLはmysql_num_rows()
の後に直接mysql_fetch_assoc()
に行きますが、問題はありません。しかし、PDOはmysql_num_rows()
のようには見えません。
SQL文でCOUNT()
を使用するか、またはPHPの関数count()
を結果セットに使用するために、私に解決策を教えてくれたSOの回答を読んできました。 COUNT()
は、結果セットにcount()
を使用するとかなり非効率的であると言及している人がいますが、いくつかの場所で結果セットが必要ない場合はSQL文で正常に動作します。
私の質問は、選択した行の数を数えなければならない場合はどうしたらいいですか?結果にcount()
を使用しているのはこの場合の唯一の方法ですか、より効率的な方法がありますか?
$query=mysql_query('SELECT ID FROM Table WHERE Name='Paul' LIMIT 1);
if(mysql_num_rows($query)>0)
{
print_r(mysql_fetch_assoc($query));
}
else
{
//Other code.
}
ありがとう:
以下は私の以前のSQLコードのようなものの短い例です。私はあなたが(私は必要なものを私に与えます)結果セットをカウントする前に文でfetchAll()
を使用することを知っていますが、私はちょうど行うための最も効率的な方法を把握しようとしている
EDIT
もの。
マニュアルには、すべてのデータベースで機能しないと記載されています。私はそれを試して傷つけないだろうと思う、私はちょうど私のデータベースがおそらくそれで動作しないことを受け入れた。試してみましょう。 – Phillip
それは、チップのおかげで、動作しました。 – Phillip