在PDO插入时遇到参数编号错误的问题

时间:2017-10-09 10:12:56

标签: php mysql json pdo

我对PHP不熟悉。我以前在PHP框架中使用基本的JSON方法编写了一些REST服务,但我很难为PDO插入工作获取正确的语法。我已经阅读了这里的一些帖子,但每次的语法似乎都略有不同,所以经过努力,我认为最好尝试&寻求建议。

我通过Cuurl查询API的代码如下:

$sth = $con->prepare('INSERT INTO epos_transactions (TransactionId,CustomerId,TableId,DeviceId,DateTime,PaymentStatus,DiscountValue,Total,ChangeTendered,Barcode,EatOut,NonDiscountable,NonVAT) 
                        VALUES 
                        (?,?,?,?,?,?,?,?,?,?,?,?,?) 
                        WHERE 
                        TransactionID not in (select TransactionId from epos_transactions where DateTime >= date("Y-m-d")."T00:00:00.000")');

$sth->bindParam (":TransactionId", $TransactionId, PDO::PARAM_STR);
$sth->bindParam (":CustomerId", $CustomerId, PDO::PARAM_STR);
$sth->bindParam (":TableId", $TableId, PDO::PARAM_STR);
$sth->bindParam (":DeviceId", $DeviceId, PDO::PARAM_STR);
$sth->bindParam (":DateTime", $DateTime, PDO::PARAM_STR);
$sth->bindParam (":PaymentStatus", $PaymentStatus, PDO::PARAM_STR);
$sth->bindParam (":DiscountValue", $DiscountValue, PDO::PARAM_STR);
$sth->bindParam (":Total", $Total, PDO::PARAM_STR);
$sth->bindParam (":ChangeTendered", $ChangeTendered, PDO::PARAM_STR);
$sth->bindParam (":Barcode", $Barcode, PDO::PARAM_STR);
$sth->bindParam (":EatOut", $EatOut, PDO::PARAM_STR);
$sth->bindParam (":NonDiscountable)", $NonDiscountable, PDO::PARAM_STR);
$sth->bindParam (":NonVAT", $NonVAT, PDO::PARAM_STR);

  $sth->execute(array($data));

$sth = null;
$con = null;

然后我按照以下的方式使用此JSON响应的结果来尝试&插入当前到目前为止尚未处理的数组中的行。

{{1}}

该错误表明我在执行PDO语句时遇到了数组到字符串转换的问题。还有绑定变量的数量与令牌的数量不匹配。

这是我的知识似乎耗尽的地方。我在这里阅读了很多帖子,但我认为它们都是略有不同的情况。 e.g。

我认为我有与变量匹配的令牌的确切数量。

我真的只是在这里寻求建议,所以我可以进一步了解这个&让自己走上正确的道路,向前迈进。

提前致谢。

0 个答案:

没有答案