首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >posted数组foreach循环上的“无效参数”

问posted数组foreach循环上的“无效参数”
EN

Stack Overflow用户
提问于 2014-04-14 20:56:35
回答 2查看 776关注 0票数 0

Yo,我有一个简单的foreach循环:

代码语言:javascript
复制
foreach ($_POST['carID'] as $carID) 
{  
    $query = "DELETE FROM cars WHERE carIndex = ".$carID."";
    echo $query;
} 

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

第8行是:

代码语言:javascript
复制
foreach ($_POST['carID'] as $carID)

数组“($POST‘’carID‘”是从另一个页面上的多个复选框创建的,只需使用提交按钮表单即可发布。

表单为:

代码语言:javascript
复制
<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现在不工作了。

我有:

代码语言:javascript
复制
$where = " WHERE ";    
foreach ($_POST['carID'] as $carID) 
{  
    $where = $where." carIndex = ".$carID." OR";
}
$where = substr($where, 0, -3); 

这个可以很好的工作。

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

我试过的yes按钮就像一个普通的提交按钮一样:

代码语言:javascript
复制
    <form name="input" action="deletecar.php" method="POST">
        <input type="submit" value="Yes" value="'.$_POST['carID'].'">
    </form>

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

deletecar.php的完整代码是:

代码语言:javascript
复制
<?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']."")

?>

发布数据的顶部回显从" array“回显出来,所以据我所知,它正在获取数据,因为它知道这是一个数组。然后是禁用的重定向。

它可能是一些简单的东西,但似乎无法弄清楚。

EN

回答 2

Stack Overflow用户

发布于 2014-04-14 21:14:11

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

代码语言:javascript
复制
<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'])的值。对于错误,您需要应用检查,并需要优化查询,如下所示

代码语言:javascript
复制
$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';
}
票数 0
EN

Stack Overflow用户

发布于 2014-04-14 21:21:10

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

Change:

代码语言:javascript
复制
<form name="input" action="deletecar.php" method="POST">
    <input type="submit" value="Yes" value="'.$_POST['carID'].'">
</form>

到的:

代码语言:javascript
复制
<form name="input" action="deletecar.php" method="POST">
    <input type="hidden" name="carID" value="'.$_POST['carID'].'">
    <input type="submit" value="Yes">
</form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23060711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档