【发布时间】:2014-04-18 19:04:37
【问题描述】:
我有一个更新语句应该更新数据库中项目的价格,因为项目的数量可能会有所不同,我尝试使用数组然后循环遍历数组。我已经两次检查了所有输入,但似乎无法确定问题所在,基本上没有更新!
这是我在 POST 请求中向表单处理器发送的内容
itemid[] 8
itemid[] 3
itemid[] 12
itemid[] 4
itemid[] 13
itemid[] 5
itemid[] 10
itemid[] 6
itemid[] 9
itemid[] 7
itemid[] 2
itemid[] 15
itemid[] 11
itemid[] 14
itemid[] 1
price[] 0.0
price[] 0.0
price[] 0.0
price[] 0.0
price[] 0.0
price[] 0.0
price[] 0.0
price[] 0.0
price[] 0.0
price[] 0.0
price[] 1
price[] 0.0
price[] 0.0
price[] 0.0
price[] 0.0
shopid 3
tag prices
和我的处理代码
else if($tag == 'prices')
{
$shopid = $_POST['shopid'];
$itemid = $_POST['itemid'];
$price = $_POST['price'];
foreach($itemid as $key => $n)
{
$db = new PDO('mysql:host=localhost;dbname=servershop', '$user', '$pass');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->prepare("UPDATE prices SET price = ? WHERE item_id = ? and shop_id = ?");
$stmt->bindValue(1, $price[$key]);
$stmt->bindValue(2, $n);
$stmt->bindValue(3, $shopid);
$stmt->execute();
}
}
最后是我应该更新的表格:
shop_id(int),item_id(int),price(double)
3,1,0
3,2,0
3,3,0
3,4,0
3,5,0
3,6,0
3,7,0
3,8,0
3,9,0
3,10,0
3,11,0
3,12,0
3,13,0
3,14,0
3,15,0
我有 PHP 错误和 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);已启用,但 firebug 控制台中未显示错误。
谁能指出我哪里出错了?
谢谢
【问题讨论】:
-
为什么 PHP 错误会出现在 Firebug 控制台中?尝试调试代码以查看使用哪些变量值实际执行的部分。如果您手头没有分步调试器,请在代码中使用
var_dump语句。 -
你知道吗,我不知道!我在想我会因为某种原因在响应中看到错误,但是我没有响应,因为出了点问题,我在写这篇文章时正在下载 PHPStorm,甚至 var_dump 也没有显示任何东西,也许我称之为一个ajax请求??无论如何,我会看看我是否可以在 PHPstorm 中解决它
-
好的,对于 AJAX 请求,您应该查看 Firebug 控制台中的响应。但是如果它是空的,你可能还有一些 PHP 设置会阻止显示错误(即
display_errors、display_startup_errors、error_reporting) -
只是 error_reporting(E_ALL);