更新:私はこの問題に直面していると思います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
なんで?正確に何が起こったのですか?