Microsoft SQL Server で PHP PDO インターフェイスを使用する際に問題があります。問題は、MS SQL Server の関数で使用するために PHP の数値を変換することです。次のステートメントを使用して、特定のレコードを削除します。
$sql = "DELETE FROM table WHERE SUBSTRING(attribute, 1, ?) = ?";
このステートメントをコードで準備して実行します (少し縮小)。
$query = $pdo->prepare ($sql);
$query->execute (array (strlen ('Text'), 'Text'));
しかし、クエリは常に失敗します。エラーは次のとおりです。
SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]部分文字列関数の引数 3 の引数データ型 nvarchar が無効です。
strlen からの数値が数値に解析されていないと想定していますが、これを修正する方法がわかりません (クエリに手動で追加する以外は)。
これらのリンクを見つけましたが、あまり役に立ちません。
http://drupal.org/node/1169202
Drupal の担当者にも同じエラーがありましたが、キャストを使用して関数を再作成することで修正しました。これを修正する他の方法はありますか?
ありがとう。