【发布时间】:2015-10-09 01:45:42
【问题描述】:
这是我的代码:
if (isset($_POST['editbutton']))
{
UNSET ($_POST['editbutton']);
foreach ($_POST as list ($id, $payment,$date)){
echo $id;
echo $payment;
echo $date;}
// $sqlupdate = ("UPDATE payments SET payment=:payment,payment_date=:date WHERE pay_id=:id");
// $preparedStatement = $db->prepare($sqlupdate);
}
我现在已将我的 UPDATE 注释掉,只是试图克服这个错误。回声现在也只是用于测试。这是我的 $_POST 的 var_dump:
array (size=3)
'id' =>
array (size=2)
0 => string '66' (length=2)
1 => string '61' (length=2)
'payment' =>
array (size=2)
0 => string '67.00' (length=5)
1 => string '125.00' (length=6)
'date' =>
array (size=2)
0 => string '2015-07-19' (length=10)
1 => string '2015-07-15' (length=10)
所以,我在 $_POST 中得到了我想要的东西,但它的 foreach 并没有按照我期望的方式运行。这是我得到的错误:
Notice: Undefined offset: 2 in C:\foo on line 98
当然第 98 行是:
foreach ($_POST as list ($id, $payment,$date))
那么,我对 foreach 有什么不了解的地方?由于是foreach,一旦到达终点,它应该停止,但似乎它是foreaching 一个额外的时间。想法?有什么建议吗?
而且我认为我想做的事情很简单(至少对我来说),但我会解释一下。我有一个表单,允许我一次更新多行。它将它们作为 $_POST['ID']、$_POST['payment'] 和 $_POST['pay_date'] 提交。我的 var_dump 显示我从表单中得到了我需要的东西。但是,当我尝试构建查询时,我在从数组中获取正确值时遇到问题。我想要做的是从每个数组中获取 [0] 位置,并将它们放入我准备好的查询中,运行更新查询,然后从每个数组的 [1] 值重新开始,运行更新,冲洗重复。
编辑:我的问题得到了完美的答案,这是我的工作代码。
if (isset($_POST['editbutton']))
{
UNSET ($_POST['editbutton']);
$sqlupdate = ("UPDATE payments SET payment=:payment, payment_date=:date WHERE pay_id=:id");
$preparedStatement = $db->prepare($sqlupdate);
list($id, $payment, $date) = array_values($_POST);
foreach ($id as $key => $items)
{
$preparedStatement->execute(array(':payment' => $payment[$key], ':date' => $date[$key], ':id' => $items));
}
}
【问题讨论】: