Life, Education, Death

プログラミング以外でも思ったことをつらつらと書きたい

ようするにMSSQLでPDOでODBCなんてしちゃいけないんだ

まず

http://bugs.php.net/bug.php?id=36561

2年くらいほって置かれているバグ。

このおかげで、PDOのメインの機能(だと思っている)プリペアドステートメントが使えないようだ。
どんなデータでも""つけて文字列として値をセットしてしまうようなエラー文に見える。


まだ状態がClosedにならないので、現在のPDO_ODBCでは解決されていなそう。

手元の環境では

Message: SQLSTATE[22018]: Invalid character value for cast specification: 206 [FreeTDS][SQL Server]Operand type clash: text is incompatible with int (SQLExecute[206] at /usr/local/src/php-5.2.5/ext/pdo_odbc/odbc_stmt.c:133)

こんなようなエラーが出る。

対応

  1. 頑張ってバグを修正する
  2. PDO_ODBCを使わないでPDO_DBILIBを使う
  3. 同等の機能をPHPで実装する

とりあえず、1は元気がないので却下。2はインストールが一発で通らなかったから、もう調べたくなくなってやめた(根性がないのは今疲れているからなんだ)

3で今回は対応していきたいと思う。

実装はそのうち、まとめられたらまとめたいなぁ。