发布的数组foreach循环中的“无效参数”

时间:2014-04-14 12:56:35

标签: php mysql arrays foreach

哟,所以我有这个简单的foreach循环:

foreach ($_POST['carID'] as $carID) 
{  
    $query = "DELETE FROM cars WHERE carIndex = ".$carID."";
    echo $query;
} 

但我收到错误:警告:在第8行的K:\ XAMPP \ htdocs \ Cars \ deletecar.php中为foreach()提供的参数无效

第8行:

foreach ($_POST['carID'] as $carID)

数组"($ _ POST [' carID']"是从另一个页面上的多个复选框创建的,只是使用提交按钮表单发布。

表格是:

<form name="input" action="delete.php" method="POST">
    <input type="submit" value="Submit">
    <while loop>
    <input type="checkbox" name="carID[]" value="'.$row['carIndex'].'">
    <end loop>
</form>

实际的复选框位于基于mysql查询的循环中。

此处生成的数组将发送到一个页面,该页面使用foreach循环显示所选数据库记录,以便为查询创建WHERE语句。完全相同的foreach现在无法正常工作。

我做:

$where = " WHERE ";    
foreach ($_POST['carID'] as $carID) 
{  
    $where = $where." carIndex = ".$carID." OR";
}
$where = substr($where, 0, -3); 

这完全正常。

我有一个你确定要删除是和否按钮。

我尝试过的“是”按钮只是一个正常的提交按钮:

    <form name="input" action="deletecar.php" method="POST">
        <input type="submit" value="Yes" value="'.$_POST['carID'].'">
    </form>

但是在提交时,在deletecar.php页面上我收到错误:警告:在第8行的K:\ XAMPP \ htdocs \ Cars \ deletecar.php中为foreach()提供的参数无效

deletecar.php的完整代码是:

<?php

$db = mysqli_connect('localhost', 'root', '', 'cdb')
      or die('Error connecting');

echo $_POST['carID'];

foreach ($_POST['carID'] as $carID) 
{  
    $query = "DELETE FROM cars WHERE carIndex = ".$carID."";
    echo $query;
} 

//header ("Location: profile.php?username=".$_SESSION['username']."")

?>

发布数据的顶部回声回声&#34;数组&#34;所以据我所知它是获取数据,因为它知道它是一个数组。然后是禁用的重定向。

它可能很简单,但似乎无法弄明白。

2 个答案:

答案 0 :(得分:0)

首先更改您的表单,如何发送两个值以及在此表单上发送$_POST['carID']值的位置提交尝试在隐藏

中发送您的carID
<form name="input" action="deletecar.php" method="POST">
  <input type="hidden" name="carID" value="<?php echo $_POST['carID']?>">
        <input type="submit" value="Yes">
    </form>

您需要先检查print_r($_POST['carID'])值。对于错误,您需要应用检查并需要优化您的查询,如

$postid = $_POST['carID'];
if(is_array($postid) && sizeof($postid) > 0) {
   foreach ($postid as $carID) 
   {  
      $query = "DELETE FROM cars WHERE carIndex = '$carID'"; //use single quote
      echo $query;
   } 
}
else {
  echo 'Something wrong with post values';
}

答案 1 :(得分:0)

缺少名称为carID的表单元素。将其包含在form中。

更改

<form name="input" action="deletecar.php" method="POST">
    <input type="submit" value="Yes" value="'.$_POST['carID'].'">
</form>

<form name="input" action="deletecar.php" method="POST">
    <input type="hidden" name="carID" value="'.$_POST['carID'].'">
    <input type="submit" value="Yes">
</form>