Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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 将整个SQL数据库放入HTML表中_Php_Html_Mysql - Fatal编程技术网

Php 将整个SQL数据库放入HTML表中

Php 将整个SQL数据库放入HTML表中,php,html,mysql,Php,Html,Mysql,我试图将整个SQL数据库放入html表中。我正在使用mysqliapi。 但它只返回表的第一行,其余的看起来都一团糟。下面是我的代码: <h1> School Lesson System</h1> <?php if(isset($_SESSION['u_id'])) { echo "You are logged in \n";

我试图将整个SQL数据库放入html表中。我正在使用mysqliapi。 但它只返回表的第一行,其余的看起来都一团糟。下面是我的代码:

            <h1> School Lesson System</h1>

            <?php

                if(isset($_SESSION['u_id'])) {
                    echo "You are logged in \n";
                }
            ?>
            <table border="1">
                <thead>
                    <tr>
                        <td>Lesson_id</td>
                        <td>Teacher</td>
                        <td>Lesson</td>
                        <td>Day</td>
                        <td>Time</td>
                        <td>Classroom</td>
                        <td>Year</td>
                        <td>Curriculum</td>
                    </tr>
                </thead>
                <tbody>
                    <?php
                    require_once 'includes/dbh.inc.php';

                    $query = "SELECT * FROM monday";
                    $result = $conn->query($query);
                    $rows = $result->num_rows;
                    for ( $j = 0; $j < $rows; ++$j) {
                        $result->data_seek($j);
                        $row = $result->fetch_array(MYSQLI_ASSOC);
                    echo "<tr>";
                        echo "<td>" . $row['Lesson_id']. "</td>";
                         echo "<td>". $row['Teacher']. "</td>";
                         echo "<td>" .$row['Lesson']. "</td>";
                         echo "<td>" . $row['Day']. "</td>";
                         echo "<td>". $row['Time']. "</td>";
                         echo "<td>". $row['Classroom']. "</td>";
                         echo "<td>". $row['Year']. "</td>";
                         echo "<td>". $row['Curriculum']. "</td>";
                     echo "</tr>";
                echo"</tbody>";
            echo"</table>";
                    }


include_once 'footer.php';
?>
学校课程体系
第十一课
老师
课程
白天
时间
教室
年
课程

有没有解决这个问题的方法???

这是因为您在for循环中关闭了tbody和table标签

       echo"</tbody>";
       echo"</table>";
echo”“;
回声“;

将这两行移到for的外部。

这是因为您关闭了for循环内部的tbody和table标记

       echo"</tbody>";
       echo"</table>";
echo”“;
回声“;
将这两行移到for的外部。

更改:

<?php
                    require_once 'includes/dbh.inc.php';

                    $query = "SELECT * FROM monday";
                    $result = $conn->query($query);
                    while ($row = $result->fetch_assoc()) {
                    echo "<tr>";
                        echo "<td>" . $row['Lesson_id']. "</td>";
                         echo "<td>". $row['Teacher']. "</td>";
                         echo "<td>" .$row['Lesson']. "</td>";
                         echo "<td>" . $row['Day']. "</td>";
                         echo "<td>". $row['Time']. "</td>";
                         echo "<td>". $row['Classroom']. "</td>";
                         echo "<td>". $row['Year']. "</td>";
                         echo "<td>". $row['Curriculum']. "</td>";
                     echo "</tr>";

                    }
  echo"</tbody>";
                echo"</table>";
更改以下内容:

<?php
                    require_once 'includes/dbh.inc.php';

                    $query = "SELECT * FROM monday";
                    $result = $conn->query($query);
                    while ($row = $result->fetch_assoc()) {
                    echo "<tr>";
                        echo "<td>" . $row['Lesson_id']. "</td>";
                         echo "<td>". $row['Teacher']. "</td>";
                         echo "<td>" .$row['Lesson']. "</td>";
                         echo "<td>" . $row['Day']. "</td>";
                         echo "<td>". $row['Time']. "</td>";
                         echo "<td>". $row['Classroom']. "</td>";
                         echo "<td>". $row['Year']. "</td>";
                         echo "<td>". $row['Curriculum']. "</td>";
                     echo "</tr>";

                    }
  echo"</tbody>";
                echo"</table>";

1.在循环中使用
而不是

2.不要关闭
内部循环(这是主要问题)

3.我看不到
session_start()会话时,请在代码中使用code>。因此,请检查,如果您没有,请将其添加到页面顶部。

你可以这样做:-

<?php
require_once 'includes/dbh.inc.php';

$query = "SELECT * FROM monday";
$result = $conn->query($query);

while($row = $result->fetch_array(MYSQLI_ASSOC)){
    echo "<tr>";
        echo "<td>" . $row['Lesson_id']. "</td>";
        echo "<td>". $row['Teacher']. "</td>";
        echo "<td>" .$row['Lesson']. "</td>";
        echo "<td>" . $row['Day']. "</td>";
        echo "<td>". $row['Time']. "</td>";
        echo "<td>". $row['Classroom']. "</td>";
        echo "<td>". $row['Year']. "</td>";
        echo "<td>". $row['Curriculum']. "</td>";
    echo "</tr>";
}
echo "</tbody>";
echo "</table>";
include_once 'footer.php';
?>

注:-


Monday
这样的表名一点也不好。这将是一个富有成效的名称,它描述了它的目的本身,如
用户(用户列表)
日志(不同活动的跟踪记录)
…等等。

1.使用
while
而不是
进行循环

2.不要关闭
内部循环(这是主要问题)

3.我看不到
session_start()会话时,请在代码中使用code>。因此,请检查,如果您没有,请将其添加到页面顶部。

你可以这样做:-

<?php
require_once 'includes/dbh.inc.php';

$query = "SELECT * FROM monday";
$result = $conn->query($query);

while($row = $result->fetch_array(MYSQLI_ASSOC)){
    echo "<tr>";
        echo "<td>" . $row['Lesson_id']. "</td>";
        echo "<td>". $row['Teacher']. "</td>";
        echo "<td>" .$row['Lesson']. "</td>";
        echo "<td>" . $row['Day']. "</td>";
        echo "<td>". $row['Time']. "</td>";
        echo "<td>". $row['Classroom']. "</td>";
        echo "<td>". $row['Year']. "</td>";
        echo "<td>". $row['Curriculum']. "</td>";
    echo "</tr>";
}
echo "</tbody>";
echo "</table>";
include_once 'footer.php';
?>

注:-


Monday
这样的表名一点也不好。这将是一个富有成效的名称,它描述了它的用途本身,如
用户(用户列表)
日志(不同活动的跟踪记录)
…等等。

创建一个用于连接数据库的类文件

  class DBConnUtil {
 private $mysqli;
 function __construct() {
    $this->open_connection();
}

private function open_connection() {    // function to connect database;
        $this->mysqli = new mysqli(DB_SERVER,DB_USER,DB_PASS,DB_NAME);
        if ($this->mysqli->connect_error) {
            die('Error : ('. $this->mysqli->connect_errno .') '. $this->mysqli->connect_error);
        }
        $this->mysqli->set_charset("utf8");
}
public function run_query ($queryString) {
    $result=$this->mysqli->query($queryString);

    if (!$result) {
        trigger_error('Wrong SQL: ' . $queryString . ' Error: ' . $this->mysqli->error, E_USER_ERROR);                                                                  
    }
    $this->close_connection();
    return $result;
}



private function close_connection() {
        $this->mysqli->close();
}    
}

然后是另一个类文件Lesson.php。使用数据库列作为私有变量i it..然后编写一个函数fetchData(),如下所示

    public function fetchData() {
    $dbConn = new DBConnUtil(); //name of the database class mention 
    before..
    $queryString = "select * from tablename ";
    $result = $dbConn->run_query($queryString);
    $rows_returned = $result->num_rows;

    $categorydata = array();
    while($rows = $result->fetch_object()){
   $categorydata[] =  $rows;
    }
    $result->free();
   return $categorydata;

   }  

然后使用foreach语句打印它。

创建用于连接数据库的类文件

  class DBConnUtil {
 private $mysqli;
 function __construct() {
    $this->open_connection();
}

private function open_connection() {    // function to connect database;
        $this->mysqli = new mysqli(DB_SERVER,DB_USER,DB_PASS,DB_NAME);
        if ($this->mysqli->connect_error) {
            die('Error : ('. $this->mysqli->connect_errno .') '. $this->mysqli->connect_error);
        }
        $this->mysqli->set_charset("utf8");
}
public function run_query ($queryString) {
    $result=$this->mysqli->query($queryString);

    if (!$result) {
        trigger_error('Wrong SQL: ' . $queryString . ' Error: ' . $this->mysqli->error, E_USER_ERROR);                                                                  
    }
    $this->close_connection();
    return $result;
}



private function close_connection() {
        $this->mysqli->close();
}    
}

然后是另一个类文件Lesson.php。使用数据库列作为私有变量i it..然后编写一个函数fetchData(),如下所示

    public function fetchData() {
    $dbConn = new DBConnUtil(); //name of the database class mention 
    before..
    $queryString = "select * from tablename ";
    $result = $dbConn->run_query($queryString);
    $rows_returned = $result->num_rows;

    $categorydata = array();
    while($rows = $result->fetch_object()){
   $categorydata[] =  $rows;
    }
    $result->free();
   return $categorydata;

   }  

然后使用foreach语句打印它。

而不是使用
循环
,只需执行
而($row=$result->fetch_assoc()){
,这是获取行的标准方法。您有一个名为“星期一”的表?恐怕您有更大的问题需要解决!与其为
循环
,只需执行
while($row=$result->fetch_assoc()){
,这是获取行的标准方法。您有一个名为“星期一”的表?恐怕您有更大的问题需要解决!为什么包装器会让它更容易?为什么直接接口不够好?根据我的经验,这样的包装器只会带来比它解决的问题更多的麻烦。为什么包装器会让它更容易?为什么直接界面不够好吗?根据我的经验,像这样的包装只会带来更多的麻烦,而解决不了。实际上,table Monday意味着所有的课程、老师、教室……都在周一进行。但是如果你能给我一个更好的名字,我很感激table Monday意味着所有的课程、老师、教室……都在周一进行r、 教室……这发生在周一。但是如果你能给我一个更好的名字,我很感激这不是lol。OP面临的实际问题不是因为
for
loop,而是因为
内写的
for
loop使整个表格扭曲。
虽然
loop只是编码的一个增强,但是它不会解决扭曲表格的实际问题。如果你耐心地与其他答案进行比较,你会发现不仅你的答案是错误的,而且还没有解释OP为什么要这样做。答案也为未来的访问者服务,因此它需要有一个解释。更改代码以使其正确,然后关闭-投票肯定会被删除。这不是lol。OP面临的实际问题不是因为
for
循环,而是因为
循环中写入
for
使整个表失真。
虽然
循环只是编码的一个增强,但它不会解决扭曲表的实际问题。如果您耐心地与其他答案进行比较,然后您会发现,不仅您的答案不正确,而且还缺少解释OP为什么要这样做。答案也为未来的访问者服务,因此需要有解释。更改代码以使其正确,您的否决票肯定会被删除。