PHP foreach mysql行更新
当我在localhost上运行上面的代码时,没有任何内容得到更新,但是当我尝试回显循环中的所有变量时,我得到了所有正确的值。这里有谁能给我们点启示吗 提前谢谢PHP foreach mysql行更新,php,mysql,foreach,Php,Mysql,Foreach,当我在localhost上运行上面的代码时,没有任何内容得到更新,但是当我尝试回显循环中的所有变量时,我得到了所有正确的值。这里有谁能给我们点启示吗 提前谢谢 编辑:修正了。$categ的值似乎在末尾包含了一个额外的空格,因此它与数据库中的值不匹配。您完全可以接受,并且应该以正确的方式使用它,而不是连接查询。特别是因为你根本没有逃避用户的输入!你能打印print\r($conn->errorInfo())吗在prepare命令之后?使用db连接的错误处理。输出生成的SQL并将其输入mysql客户
编辑:修正了。$categ的值似乎在末尾包含了一个额外的空格,因此它与数据库中的值不匹配。您完全可以接受,并且应该以正确的方式使用它,而不是连接查询。特别是因为你根本没有逃避用户的输入!你能打印
print\r($conn->errorInfo())吗代码>在prepare命令之后?使用db连接的错误处理。输出生成的SQL并将其输入mysql客户端。毕竟,在您准备好的语句中使用参数并绑定它们。@AgamBanga以下是打印结果:数组([0]=>00000[1]=>[2]=>)数组([0]=>00000[1]=>[2]=>)数组([0]=>00000[1]=>[2]=>)
似乎只有最后一次迭代有效并记录在数据库中,前两个由于未知原因被跳过。我在回显变量时仍然得到正确的值。@tyy007也替换这个$sql->execute()代码>到变量转储($sql->execute())代码>。检查在任何情况下它是否返回0,您是否完全可以使用它,并且应该以正确的方式使用它,而不是连接查询。特别是因为你根本没有逃避用户的输入!你能打印print\r($conn->errorInfo())吗代码>在prepare命令之后?使用db连接的错误处理。输出生成的SQL并将其输入mysql客户端。毕竟,在您准备好的语句中使用参数并绑定它们。@AgamBanga以下是打印结果:数组([0]=>00000[1]=>[2]=>)数组([0]=>00000[1]=>[2]=>)数组([0]=>00000[1]=>[2]=>)
似乎只有最后一次迭代有效并记录在数据库中,前两个由于未知原因被跳过。我在回显变量时仍然得到正确的值。@tyy007也替换这个$sql->execute()代码>到变量转储($sql->execute())代码>。检查在任何情况下是否返回0
foreach($_POST['categ_name'] as $key => $categ)
{
$beg = $_POST['beg_count'][$key];
$del = $_POST['del_count'][$key];
$ret = $_POST['ret_count'] [$key];
$exc = $_POST['exc_count'] [$key];
$pout = $_POST['pout_count'] [$key];
$sales = $_POST['sales_count'] [$key];
$end = $_POST['end_count'] [$key];
$actual = $_POST['actual_count'] [$key];
$var = $_POST['variance'] [$key];
$sql = $conn->prepare("UPDATE `inventory_report_count` SET `beg` = '$beg' , `del` = '$del' , `ret` = '$ret' , `exc` = '$exc' , `po` = '$pout' ,`sales` = '$sales' ,`end` = '$end' ,`actual_count` = '$actual' ,`variance` = '$var' WHERE `categ_name` = '$categ' ");
$sql -> execute();
}