【问题标题】:While loop working only once inside for each phpWhile 循环在每个 php 内部只工作一次
【发布时间】:2017-03-02 23:44:03
【问题描述】:

这是我的代码。我知道,while 循环只会工作一次。但是foreach 在获取一个值后不会循环,即如果我选择了 3 个复选框。只有一个会传递值。

if(!empty($_POST["list"]))  
      {  
$connect = @mysql_connect("localhost","***","***") or die (" this error");
mysql_select_db("edu_info")or die ("database does not exist"); 


          foreach($_POST["list"] as $list=> $val)  
           {  


$query=mysql_query("select * from students where id='$val' limit 1");

while($row=mysql_fetch_assoc($query))
{
$user=$row['username'];
$number=$row['pphone'];
$name=$row['name'];
$pname=$row['pname'];
}
echo $user;
echo $number;
echo $name;
echo $pname;
    }
    }

这是我在 html 中的复选框。复选框的数量不固定,取决于查询。下面的代码只是获取多个复选框

    {
        <input type="checkbox" name="list[]" value="<?php echo $id; ?>
    }

为什么 foreach 没有从所有选中的复选框中获取值。请帮忙。提前致谢。 :)

【问题讨论】:

  • 不要在这样的循环中运行查询,您只需要一个更高效的查询
  • 什么是$query1 以及它如何与$query 关联?
  • 我猜它只获得您选择的最后一个值是否正确?因为您在第一次剪切时覆盖了变量 - 而您实际上并没有对它们做任何事情(至少不是从您显示的代码中)。
  • 我正在使用 $query_1 获取多个复选框。我使用了 $id 并通过 foreach 获取了 $val。但问题是当我使用 $val 获取其他变量(如 $user)时,当我回显它们时.. 我只得到一个 $username、$number、$name 等。我不应该为每个 $val

标签: php html loops foreach while-loop


【解决方案1】:

在我看来,您的 while 循环每次都会覆盖这些值。我看不到您在哪里对检索到的值做任何事情,因此,例如:

$user=$row['username'];

可能会执行 3 次,但每次都会覆盖之前的值。它总是给你最后选择的值,对吧?如果是这样,那是因为您将 $user 设置了 3 次,并且只有在最后一次之后才对它进行任何操作。

【讨论】:

  • 在获得 $val 之后,我正在使用它从另一个数据库中选择像 $user 这样的变量。但是当我回显这些变量时,我只得到一个值。foreach 没有针对我拥有的所有复选框执行选择..所以基本上我得到一个 $val 而不是很多
猜你喜欢
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 2012-05-28
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多