PHP-PDO_PGSQL - SQLSTATE [HY093]:参数号无效

时间:2015-10-15 12:54:42

标签: php postgresql pdo

我一整天都坚持这个简单的准备陈述:

// $conn it's my PDO Object
// and $intervention my params'array

$s = $conn->prepare("INSERT INTO intervention(firm_id,category,subject,amount,start_date,end_date) VALUES(:firm_id,':category',':subject',:amount,':start_date',':end_date')");
$result = $s->execute(array(
    'firm_id' => $firm_id ,
    'category' => $intervention["category"] ,
    'subject' => $intervention["subject"] ,
    'amount'=> $intervention["amount"] ,
    'start_date'=> $intervention["start_date"],
    'end_date'=>$intervention["end_date"] 
));

执行 会给我:

警告:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:: category

有人可以帮我理解这个简单代码有什么问题吗?

2 个答案:

答案 0 :(得分:2)

在这部分查询中: VALUES(:firm_id,':category',

:category被视为文字字符串而不是参数名称,因为它包含了引号。

参数名称周围不应有引号,如:

...VALUES(:firm_id, :category,...

查询其余部分的其他非数字参数也存在同样的错误。

答案 1 :(得分:1)

参数名称不应该有引号。准备好的声明将正确地进行替换。还要注意在查询中写入的参数数量以及在execute方法上绑定的内容。