无法使用PDO插入十进制值

时间:2013-02-18 17:54:46

标签: php mysql insert pdo decimal

我一直在网上拖网几个小时并尝试不同的方法,我无法理解为什么PDO无法插入其中一个值包含小数的任何行。

例如,如果输入到成本字段中的值没有小数值,那么它可以正常工作。但是像小数一样,只是忽略整行。

200件作品,甚至200.00件作品。但像39.99这样的事情却没有。

以下是代码:

$invoice_id = $db->lastInsertId('id');

$item_name = $_POST['item_name'];
$item_qty = $_POST['item_qty'];
$item_cost = $_POST['item_cost'];
$item_vat = $_POST['item_vat'];

for($i = 0; $i < count($item_name); $i++) {
$item_query = $db->prepare("INSERT INTO hm_invoice_items(invoice, item, qty, amount, vat) VALUES(:invoice, :item, :qty, :amount, :vat)");
$item_query->bindParam(":invoice", $invoice_id);
$item_query->bindParam(":item", $item_name[$i]);
$item_query->bindParam(":qty", $item_qty[$i]);
$item_query->bindParam(":amount", $item_cost[$i]);
$item_query->bindParam(":vat", $item_vat[$i]);

if (!$item_query->execute())
    {
        die(showMessage("There has been a problem adding the invoice items.", "Error!"));
    }
}

var_dump告诉我插入查询正在接收值,但它不喜欢处理小数。

3 个答案:

答案 0 :(得分:0)

小数点分隔符可能存在问题 在调试此类情况时,对var_dump() e-ve-ry-thing来说,必不可少! 你为什么不为更仔细的检查而改变你的价值? 你为什么不玩小数,没有POST,没有其他值?

标题为“无法使用PDO插入小数值”的问题应包含可重现的简短代码,并且读数和结果会显示十进制值。
通过间接措施判断对你没有任何帮助,特别是 - 不会给你陌生人的帮助。

“var_dump your values”表示每个可疑值,例如

var_dump($item_cost[$i]);
循环中的


如果你没有输出 - 那么就有空值,所以,难怪没有插入。

顺便说一句,您将明显的十进制item_cost值绑定到明显的整数amount字段。这是一个错字吗?

但是再次 - 某个可重现的校对码在哪里包含一个插入查询,一个硬编码的十进制值和一个结果?呃 - 当然还有表格定义。

答案 1 :(得分:0)

试试这个?

$item_query->bindParam(":amount", floatval($item_cost[$i]));

当我使用PDO处理MySQL十进制数据类型时,至少它适用于我。

答案 2 :(得分:-1)

使用以下内容显示发布到PHP脚本的值所有的内容:

print_r($_POST);