スキップしてメイン コンテンツに移動

[PHP]PHPのmysql系関数のまとめ

お手軽にウェブサービスを構築するなら、Apache+PHP+MySQLっていうのは定番だと思うのですが、そんなお手軽な組み合わせだからこそ、PHPからMySQLの利用がしやすいようにと専用のMySQL関数というのがあります。

そんなMySQL関数の中でも、コード量が減らせそうな小技が効いたMySQL関数を紹介します。




MySQL関数で一番、というか必ず利用するのは、以下の関数群でしょう。
mysql_connect()
mysql_select_db()
mysql_query()
mysql_fetch_array()
mysql_fetch_assoc()
mysql_fetch_num()
mysql_close()

とりあえずこれだけの関数があれば、なんとなく事足りそうな気はしますね。いや、事実これだけで完結することもできるでしょう。
でも、さっきINSERTした行を特定する(例えば id)に、先ほどの関数だけで行うには、mysql_query()とmysql_fetch_array()などでシーケンシャルなカラムを取得する必要があります。コードが冗長になり、更にはコード量が増えた結果、コーディングミスの可能性まで上がります。
そういう時はこれ一発。
$id = mysql_insert_id();

これで「$id」には直前にINSERTした行のidカラムが代入されます。意外にさっきINSERTした行のidがほしい時ってのはあるもんで、重宝します。

他には、直前のUPDATE、DELETE、INSERT、REPLACEで変更された行数を返してくれる、mysql_affected_rows()という関数があります。この関数は、
mysql_query("UPDATE `hoge_tbl` SET `name` = 'huga' WHERE `flg`='1'");
if ($num = mysql_affected_rows()){
    echo $num. "行UPDATEされました";
} else {
    echo "1行も更新されませんでした";
}

と、UPDATEの有無によって処理を分岐させたりするのに使えます。

SELECT結果の件数が知りたい場合は、mysql_num_rows()という関数もあります。これは直前に行われたSELECTが対象で、フェッチする必要がないので、単純に行数が知りたい時はこちらの方がスッキリしますね。

更に、クエリが正常に行われたかチェックするには、mysql_query()の戻り値を見るのもいいですが、mysql_errno()という関数もあります。この関数のいい所は、エラーが出ていればエラー番号、エラーがないなら「0(ゼロ)」を返す、常に戻り値がint型という簡潔さ。ついでにmysql_error()でエラーメッセージも表示すれば、デバッグ効率は大きく向上するでしょう。
ちなみに僕は、mysql_errno()が0以外の場合は、エラー番号とエラーメッセージと問題のあるクエリをログファイルに書きこむ(それだけではないですが)自作のログ収集クラスも用意しています。こういうのは、本番稼働中でエラーメッセージが表示できない場合でも有効に情報収集できるので重宝します。ロジックの不具合はPHPのエラーログだけで解決しない事の方が多いでしょう。

PHPのMySQL関数は、以下のPHPマニュアルページにもまとめられています。今回紹介しなかった関数もありますので、一度目を通してみると何か発見できるかも知れません。

PHP: MySQL - Manual


see also:
php-mcryptがyumでインストールできないときに幸せになる方法
そろそろ真面目に自動テストしよう
PHPerが一瞬でC言語をマスターする方法
さくらインターネットの .mailfilter にハマる


コメント

このブログの人気の投稿

[VB.NET]オレオレ証明書でSSL通信するための短絡的な解決法

VB.NETソフトウェアでサーバーと通信することはよくある事だと思いますが、最近はHTTPを使って明けっ広げに刺しに行くよりHTTPSを使って暗号化してこそこそやった方が時代の流れに即した感じですよね(違うか)。 いちいちテスト環境でSSL証明書を用意するのも面倒だということで、セキュリティ的には全くよろしくない方法で迂回できるので紹介します。

[JS]Canvasでよく使う描画テクまとめ

HTMLで画像をいじくりたい時は、canvasを利用して編集するのは一般的ですが、WindowsストアアプリではHTML+CSS+JSでのアプリ開発ができる事もあって、簡単な画像編集であれば、C#やVBを使うより分かりやすいし資料が多く、C++でDirectXをガリガリ書くよりお手軽。入出力もファイルピッカーを使えば簡単に実装できます。今回は、Windowsのコードではなく、Canvasを利用する時のJavaScriptを使いどきに合わせてまとめていきます。

curl の基本的な使い方 -設定編-

今回のcurl TIPSは、curlをより日常的に使っていくためのHow toです。curlには、数多くのオプションが用意されていて、それらを組み合わせる事で様々な事が楽になるでしょう。サービス監視の自動化などにはまさにcurlの得意分野です。 今回は、curlを更に自分のものにしていくために大事なカスタマイズの部分を解説します。