PHP

PHPからOCI関数を使用する際のORA-24816エラーを回避する方法

ORA-24816: Expanded non LONG bind data supplied after actual LONG or LOB column というエラーが出た場合、Bind順を変更することによって解決ができる。 INSERT文ならVALUESの最後に持ってくる、UPDATEなら……、どうすればいいんだろう。 スマートな解決…

64bit版のOracleクライアントをPHPから使えない件

64bit版のCentOSにOracleのinstantclientをRPMでインストールして、それをPHPから使おうとするとConfigureでエラーとなった。 rpm -ivh oracle-instantclient-basic-10.2.0.3-1.x86_64.rpm rpm -ivh oracle-instantclient-devel-10.2.0.3-1.x86_64.rpm [root…

Adodbからoci8ドライバを使って変数をbindしてみる

通常、MySQLなどからだと"WHERE test_id = ?"というSQLをPHP内に書いてbindをするけれど、oci8ドライバだと"oci_bind_by_name"という関数を使ってbindする都合上、そのやり方だとうまくいかない。 SQL内でbind部分は":testid"のように書き、bindする配列は連…

PHPからOracleへAdodbを介して接続してみる。

PHPからOracleに接続可能にする インストールされていたPHPに、Oracleを使うオプションがなかったので追加して再インストール。 # ./configure ...(略)... '--with-oci8' # make # make install Adodbを使って接続 Connect( false, "system", "********" ); …

LIKE句でbindという頭がなかった過去の自分を殺してやりたい

bind(array("%".$stringName."%")); ?> はい、bindする前後の文字列に"%"を与えてあげれば「含む」で検索できますね。このアイデアはなかったわ。いや…

変換をする必要がある場合は「"」を、それ以外の場合は「'」を使いましょうというコーディング規約

PHP

ハッキリ言って、受け入れられません。自分の場合は逆です。変換の必要がない場合にシングルクォートを使います。 改行が必要な場合は\n(\r)を入れればいいから Shiftを押しながら7キーは遠いから 後で変換が必要になったら困るでしょ? ボトルネックなんか…

巷のPHPフレームワークを使うのに抵抗がある、理由。

PHP

職業柄、多種多様な検索条件を入力させて、それをもとにページを表示させるってプログラムを組むことが多いのよ。で、それをCakePHPとかにやらせるとなると、URLのパラメータに検索条件を含ませていると"/0/3/%**%**/"とかになって、URLを見ただけだと「なん…

荻野は代田なのか?PHPの凄まじすぎる落とし穴をプログラマらしく埋める方法

PHP

PHPの==がキモい件 - hnwの日記 いや、コレマジでまともに文字列比較すらできませんよ。 ↓実行結果 ogino is daita "0"と"00"を"=="で比較するとtrueになってしまう、という話。ロッテの若手抑え投手が、ベテラン俊足外野手と同じだっていうのか。いや、野…

"encoding_translation"が効かない場合がある

PHP

HTMLに記述されたform要素の"enctype"属性の値によって、mbstring.encoding_translationが効かない場合がある。 そもそも、自動的に$_GETや$_POSTの値を変換してしまうという厄介なこの設定に使い道があるのかというハナシでもあるけれど、Onになったまま運…

呼び出しファイルが整理されていない場合に表にして把握の一助とする

PHP

PHPの全ソースファイルから"require_once","include_once"などを含む行をgrepする。 どのファイルからどのファイルが呼び出されているかの表を、csvなどで作成する。 開始ファイルから再帰的に検索し、どのファイルを呼ぶと全部で何がrequireされるのかをま…