0

更新:私はこの問題に直面していると思いますhttp://social.msdn.microsoft.com/Forums/en-US/sqldriverforphp/thread/2a559a42-0ef3-42c8-9e87-08ff7934678a/これがケース。

何が起こっているのか理解できません。たぶん、デバッグツールが悪いか、ステートメントが組み立てられる方法で何かが壊れているかもしれません.

私はこの声明を持っています:

$rule_statment = $pdo->prepare(
                "if not exists
                 (select * from menu_availability_rules
                 where
                   (daily_serving_start = :start or
                    daily_serving_start is null and :start is null) and
                   (daily_serving_end = :end or
                    daily_serving_end is null and :end is null) and
                   (weekly_service_off = :weekly or
                    weekly_service_off is null and :weekly is null) and
                   (one_time_service_off = :once or
                    one_time_service_off is null and :once is null))
                 begin
                   insert into menu_availability_rules
                    (daily_serving_start, daily_serving_end,
                     weekly_service_off, one_time_service_off)
                   values (:start, :end, :weekly, :once)
                 end");

を呼び出す前に必要なすべてのパラメーターをバインドしますexecuteが、SQL Server から構文エラーが返されます。

COUNT field incorrect or syntax error

印刷してみました:

$rule_statment->debugDumpParams();

出力は次のとおりです。

if not exists
                 (select * from menu_availability_rules
                 where
                   (daily_serving_start = :start or
                    daily_serving_start is null and :start is null) and
                   (daily_serving_end = :end or
                    daily_serving_end is null and :end is null) and
                   (weekly_service_off = :weekly or
                    weekly_service_off is null and :weekly is null) and

Params:  4
Key: Name: [6] :start
paramno=0
name=[6] ":start"
is_param=1
param_type=0
Key: Name: [4] :end
paramno=2
name=[4] ":end"
is_param=1
param_type=0
Key: Name: [7] :weekly
paramno=4
name=[7] ":weekly"
is_param=1
param_type=1
Key: Name: [5] :once
paramno=6
name=[5] ":once"
is_param=1
param_type=2

なんで?正確に何が起こったのですか?

4

1 に答える 1

0

クエリ内で複数回出現する場合、PHPは名前付きパラメーターを置き換えないようです-誰が知っていましたか:|

于 2013-03-10T10:37:52.183 に答える