【发布时间】:2013-02-03 05:52:40
【问题描述】:
我已经在网上搜索了好几个小时并尝试了不同的方法,但我不明白为什么 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 告诉我插入查询正在接收值,但它不喜欢处理小数。
【问题讨论】:
-
忽略如何?你得到你的错误信息?您至少应该输出 mysql 错误消息,而不是仅仅说“出现问题”。
-
您的列是 DECIMAL 类型吗?
-
为什么你使用
$item_name[$i]而不是$_POST['item_name'][$i]?有什么好处吗? -
是的,它会抛出错误。我似乎无法让 PDO 错误消息正常工作?是的,列类型是 DECIMAL(19,2)。
-
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );连接后以使 PDO 错误消息正常工作
标签: php mysql insert pdo decimal