ここでは、Zend Framework-1.11 による PHP から各種データベースへのクエリ発行時に行う SQL 文のクォート処理の実装例を掲載しています。エスケープによる SQL インジェクション対策は必須ともいえます。
Tag Archives: データベース
[ Oracle ] SELECT FOR UPDATE 悲観的ロックによる損失は数千万円
Oracle は多くの大企業で採用されているデータベースです。保守料も高額ですので大企業くらいしか導入できないのことが実際のところではないでしょうか。保守料のかからない無償版という選択肢もありますが、以下のような制約もあるので使い辛いのではないでしょうか。
[ Oracle ] v$instance ビューで死活監視するサンプルシェルスクリプト ( status OPEN )
ここでは、v$instance ビューを使用した Oracle の死活監視についてサンプルを掲載しています。
[ HTML ] input タグの maxlength 属性はバイト数?文字数?
input タグの maxlength 属性は文字数ですが、ブラウザの実装依存などの違いが存在することもあるようです。従って maxlength 属性は気休め程度に考えておけば良いでしょう。
[ Oracle ] テーブル名やカラム名にSQL予約語を使用する
まず始めに言いますが、Oracle に限らず SQL の予約語をテーブル名やカラム名に使用することは止めておくべきでしょう。使用することによるメリットよりもデメリットが大きすぎると思います。おそらくデメリットを理解した上で使用する人は M なんだと思います。
[ Oracle ] CREATE SEQUENCE で自動インクリメント風の動作
Oracle には MySQL や Postgresql のようにレコードを挿入すると自動的に値をインクリメントして挿入する機能はありません。ここでは、CREATE SEQUENCE 文でシーケンスを作成し、自動インクリメント風の動作をさせてみようと思います。レッツ挿入!
[ MySQL ] n分前, n時間前, n日後の日付を取得する ( INTERVAL )
データベースに限った話ではありませんが、10分前の時刻や、1か月後の日付などを求める機会は多くあります。MySQL では、四則演算のプラス・マイナス記号を使って直感的な SQL を記述して過去や未来の日時を取得することができます。
[ ODP.NET ] Oracle へ接続し SQL を発行する (OracleConnection / OracleCommand)
ODP.NET を使用して、SQL を発行するサンプルです。通常、よく使用するのは select / insert / update / delete 文 だと思いますが。大きく分けて結果が返される select 文と、結果が返されない insert / update / delete 文では SQL の発行方法が異なります。
[ Oracle SQL ] if 文や switch 文 ( CASE ~ WHEN ) を使って条件分岐を行う
一般的なプログラムで使われる if 文を SQL で記述するには CASE ~ WHEN を使用します。ここで掲載しているサンプルは Oracle で動作確認を行っていますが、MySQL や Postgres など他のデータベースでも動作するかもしません。
「安心してください。確認していません。」
[ Oracle ] シーケンスの取得(nextval / currval)
Oracle でシーケンスを作成した直後は、現在値には値が入っていません。現在値が未設定のまま SQL でシーケンスの現在値を取得しようとすると ORA-08002 エラーが発生します。 ここでは、出力されるエラーと対応方法について掲載しています。