【问题标题】:SQLSTATE[HY093]: Invalid parameter number: parameter was not defined PDO [duplicate]SQLSTATE [HY093]:参数号无效:参数未定义 PDO [重复]
【发布时间】:2017-06-10 06:22:03
【问题描述】:

我正在尝试使用 ajax 使用 PDO 语句插入值。但每次它抛出mysql错误。有什么东西不见了!

$st = $pdo->prepare('INSERT INTO payment_tbl (user_id, payment_mode, bank_name, cheque_no, pending_amt) 
       VALUES(  :user_id, :payment_mode, :bank_name, :cheque_no, :pending_amt )');


 $st->bindParam('user_id' , $user_id);
 $st->bindParam('payment_mode' , $pmode1);
 $st->bindParam('bank_name' , $bank_name1);
 $st->bindParam('cheque_no' , $cheque_no1);
 $st->bindParam('paid_amt' , $paid_amt1);

 $st->execute();

【问题讨论】:

  • 您在所有行的 bindParam 中都忘记了 :$st->bindParam('paid_amt' , $paid_amt1); 中的一个错字应该是:- $st->bindParam(':pending_amt' , $paid_amt1);
  • shyamm 你得到答案了吗?
  • 我找到了另一个不使用 bindParam() 的解决方案,即
  • $st = $pdo->prepare("INSERT INTO payment_tbl (user_id, payment_mode, bank_name, cheque_no, transaction_date, remark) VALUES( '$user_id' , '$pmode1' , '$bank_name1' , '$cheque_no1', '$trans_date' , '$remark')");
  • 这不是一个解决方案,而是一场灾难。

标签: php mysql pdo


【解决方案1】:

看起来像是一个简单的错字问题。应该

    $st->bindParam('paid_amt' , $paid_amt1);

成为

    $st->bindParam('pending_amt' , $pending_amt);

改为?

【讨论】:

  • 因错字引起的问题,您必须投票关闭它们,而不是回答
  • 不幸的是,我不能...我没有这样做的声誉。但我相信你知道这一点。
  • @chrisg 你指出了正确的事情。所以+1。但仍然答案不完整。你可以看看我的回答
猜你喜欢
  • 2012-04-15
  • 2016-12-15
  • 2022-01-10
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
相关资源
最近更新 更多