Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.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_Html_Mysql - Fatal编程技术网

php:在连续显示数据的同时

php:在连续显示数据的同时,php,html,mysql,Php,Html,Mysql,好的,我有一个名为users的表,其中包含: Students Name: Grade: 1. Ben 1 2. Cathy 1 3. Tom 1 4. Mark 1 5. Lisa 1 6. Bernard 1 7. John 2 8. Macy 2 9. Rose 2 10. Maynard

好的,我有一个名为users的表,其中包含:

Students Name:     Grade:
1. Ben             1
2. Cathy           1
3. Tom             1
4. Mark            1
5. Lisa            1
6. Bernard         1
7. John            2
8. Macy            2
9. Rose            2
10. Maynard        2
11. Bill           2
12. Sherlock       2
因此,基本上,我有6名一年级学生和6名二年级学生。我想使用两列表格根据他们的成绩显示他们:

----------------------------------
Grade 1 
----------------------------------
Table 1          |    Table 2
                 |
                 |
这样做的目的是为了节省空间,我不想在一列中显示所有的等级1,我希望表1和表2根据记录分别显示3个等级1

我尝试使用以下代码:

$sql = "SELECT * FROM users WHERE grade = '$grade1' LIMIT 3";
$result = mysqli_query($connectdb,$sql);

while($row=mysqli_fetch_assoc($result)) {
   $name = $row['name'];
   echo "<tr>";
   echo "<td>";
   echo $name;
   echo "</td>";
   echo "</tr>";

}
我怎样才能用这样的方式制作:

----------------------------------
Grade 1 
----------------------------------
Table 1          |Table 2
   Ben           |  Mark
   Cathy         |  Lisa
   Tom           |  Bernard

请原谅我的知识不足,我实际上不熟悉WHILE命令。

问题是您只检索前3名学生的数据并显示两次

有两条路第一条路

$sql = "SELECT * FROM users WHERE grade = '$grade1'";

$result = mysqli_query($connectdb,$sql);

$i=0;
while($row=mysqli_fetch_assoc($result)) {
 if($i==0 || $i==3){
   echo "<table>"
 }
   $name = $row['name'];
   echo "<tr>";
   echo "<td>";
   echo $name;
   echo "</td>";
   echo "</tr>";
 if($i==0 || $i==3){
    echo "</table>"
 }
$i++;
}
$sql=“从等级为“$grade1”的用户中选择*;
$result=mysqli\u查询($connectdb,$sql);
$i=0;
while($row=mysqli\u fetch\u assoc($result)){
如果($i==0 | |$i==3){
回声“”
}
$name=$row['name'];
回声“;
回声“;
echo$name;
回声“;
回声“;
如果($i==0 | |$i==3){
回声“”
}
$i++;
}
第二种方法是再添加一个,在这里您将检索剩余的3个学生数据,并需要将其显示在不同的表中

$sql = "SELECT * FROM users WHERE grade = '$grade1' LIMIT 3,3";

$result = mysqli_query($connectdb,$sql);

while($row=mysqli_fetch_assoc($result)) {
   $name = $row['name'];
   echo "<tr>";
   echo "<td>";
   echo $name;
   echo "</td>";
   echo "</tr>";

}
$sql=“从等级=“$grade1”限制为3,3”的用户中选择*;
$result=mysqli\u查询($connectdb,$sql);
while($row=mysqli\u fetch\u assoc($result)){
$name=$row['name'];
回声“;
回声“;
echo$name;
回声“;
回声“;
}

如果执行同一查询两次,那么为什么会得到不同的结果?第二次执行查询时,将
$grade1
的值从1更改为2警告:使用
mysqli
时,您应该使用和向查询中添加用户数据。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。要在两列中执行此操作,您必须获取两个结果集,然后通过排序将它们折叠到另一个数组中。@tadman,哇!谢谢我不知道这样直接将数据链接到查询是危险的。非常感谢你!谢谢,我想这是我喜欢的一个,我只是不知道“限制3,3”为什么还有第二个“3”,我怎么能用第二个表来显示4-6而不是1-3?第二个3-3告诉你需要多少记录,第一个告诉你从哪里开始。所以如果我想从4-6开始显示,我将只写
限制4,3
对吗?不,这是限制3,3,因为表中的行索引从0开始,所以代码限制4,3表示从5到7
$sql = "SELECT * FROM users WHERE grade = '$grade1' LIMIT 3,3";

$result = mysqli_query($connectdb,$sql);

while($row=mysqli_fetch_assoc($result)) {
   $name = $row['name'];
   echo "<tr>";
   echo "<td>";
   echo $name;
   echo "</td>";
   echo "</tr>";

}