Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否使用从循环接收的多个复选框值更新数据库?_Php_Mysql - Fatal编程技术网

Php 是否使用从循环接收的多个复选框值更新数据库?

Php 是否使用从循环接收的多个复选框值更新数据库?,php,mysql,Php,Mysql,基本上,我正在尝试用多个值更新我的数据库。输入字段处于循环中,因此我需要同时更新多个复选框和文本框 $cityID = $_POST["cityID"]; $cityStatus = $_POST["cityStatus"]; $cityOrder = $_POST["cityOrder"]; $updateCities = $db->execute("UPDATE cities SET city_status=?, city_order=? WHERE city_ID=$cityI

基本上,我正在尝试用多个值更新我的数据库。输入字段处于循环中,因此我需要同时更新多个复选框和文本框

$cityID = $_POST["cityID"];
$cityStatus = $_POST["cityStatus"];
$cityOrder = $_POST["cityOrder"];  

$updateCities = $db->execute("UPDATE cities SET city_status=?, city_order=? WHERE city_ID=$cityID", array($city_status, $cityOrder));

foreach($cities as $row) :
?>

<input type="checkbox" name="cityStatus[]" value="1">
<input type="text" name="cityOrder[]" value="<?php echo $row->city_order ?>">
<input type="hidden" name="cityID" value="<?php echo $row->city_ID; ?>">
$cityID=$\u POST[“cityID”];
$cityStatus=$_POST[“cityStatus”];
$cityOrder=$_POST[“cityOrder”];
$updateCities=$db->execute(“更新城市集city_status=?,city_order=?其中city_ID=$cityID”),数组($city_status,$cityOrder));
foreach($row形式的城市):
?>
我所理解的是
1.您有一个包含3个字段的数组(cityid、cityorder、city status)
2.您正在提交表单中的所有这些值
3.您需要更新cityorder,citystatus取决于cityid

解决方案非常简单

$i=0;
foreach($_REQUEST['cityOrder']) as $cityorder){

$cityID = $_POST["cityID"][$i];
$cityStatus = isset($_POST["cityStatus"][$i])?$_POST["cityStatus"][$i]:0;
$cityOrder = $_POST["cityOrder"][$i];  

$updateCities = $db->execute("UPDATE cities SET city_status=?, city_order=? WHERE city_ID=$cityID", array($city_status, $cityOrder));

$i++;
}

问题是什么?有错误吗?为什么要直接在查询中注入
$cityID
,而对其他字段使用占位符?输入字段在一个循环中,因此我尝试同时更新多个复选框。如果这是在一个循环中,则您有多个
name=“cityID”
。如果是
name=“cityID[]”
您需要为所有输入提供相同的键,因为表单提交上只显示选中的复选框,所以为了知道选中哪个复选框访问其他字段,它们都需要相同,即
name=“cityStatus[$row->city\u ID]”
/
name=“cityOrder[]”
/
name=“cityID[$row->city\u ID]”
。然后,您可以使用foreach($\u POST['cityStatus']作为$key=>$value){$\u POST['cityStatus'][$key];$\u POST['cityOrder'][$key];$\u POST['cityID'][$key];