Php 将整个SQL数据库放入HTML表中
我试图将整个SQL数据库放入html表中。我正在使用mysqliapi。 但它只返回表的第一行,其余的看起来都一团糟。下面是我的代码: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";
<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为什么要这样做。答案也为未来的访问者服务,因此需要有解释。更改代码以使其正确,您的否决票肯定会被删除。