【问题标题】:PHP-PDO_PGSQL - SQLSTATE[HY093]: Invalid parameter numberPHP-PDO_PGSQL - SQLSTATE[HY093]:参数号无效
【发布时间】:2016-01-13 22:44:18
【问题描述】:

我整天都被这个简单的准备好的陈述所困扰:

// $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

谁能帮我理解这个简单的代码有什么问题?

【问题讨论】:

    标签: php postgresql pdo


    【解决方案1】:

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

    :category 被视为文字字符串而不是参数名称,因为它是用引号括起来的。

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

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

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

    【讨论】:

      【解决方案2】:

      参数名称不应有引号。准备好的语句将正确地进行替换。还要注意您在查询中编写的参数数量以及您将在执行方法上绑定什么。

      【讨论】:

      • 这对我来说很尴尬,但确实如此。也谢谢你!
      猜你喜欢
      • 2013-08-04
      • 2020-08-11
      • 2023-01-27
      • 2023-01-09
      • 2016-03-04
      相关资源
      最近更新 更多