在 PHP 中显示表格
Posted
技术标签:
【中文标题】在 PHP 中显示表格【英文标题】:Showing table in PHP 【发布时间】:2021-09-23 09:11:49 【问题描述】:我必须显示来自 mysqli 数据库的大量数据列表,但是当我试图显示数据时,表中只显示第一项(这里有多个数据来自单个 id,大约有 16,000 个 id ,就像一个 id 即站点它们是门警报、站点警报、电池警报和故障警报)。我试过 while 循环,但它在这里不起作用。
代码
<?php
include 'dbinc.php';
mysql_connect($mysql_hostname,$mysql_user,$mysql_password);//database connection
mysql_select_db($mysql_database);
$order = "SELECT * FROM quanta
ORDER BY ID DESC
LIMIT 1
";
//order to search data
//declare in the order variable
$result = mysql_query($order);
//order executes the result is saved
//in the variable of $result
$data = mysql_fetch_row($result);
$data_id = $data[0]; //Unique Id
$data_timestamp = $data[1]; //Time Stamp by Server
$data_validated = $data[2]; //Validated by Server
$data_type = $data[3]; //Type 0 - Periodic / 1 - Fault
$data_type_str = "Unknown";
if ($data[3] == 0) $data_type_str = "Periodic";
if ($data[3] == 1) $data_type_str = "Fault";
$data_site_id = $data[4]; //String Site Id
$data_datetime = $data[5]; //Date Time by Device
$data_device_id = $data[6]; //Device Id/ Only 1 known for now
$data_status = $data[7]; //Status Bits - To Expand
$data_status_hex= bin2hex($data_status);
$data_raw = $data[8]; //Raw Data, for device specific information
echo ("<table class='table table-striped'>");
echo("
<tr><td>Site Id</td><td>$data[4]</td></tr>
<tr><td>Date Time</td><td>$data_datetime</td></tr>
<tr><td>Device Id</td><td>$data_device_id</td></tr>");
//echo ("Status: <b>$data_status</b><br>");
//echo ("Status: <b>$data_status_hex</b></tr>");
//$tmp = gettype($data_status);
//echo "Var: $tmp<br>";
$stats = unpack ( "C*" , $data_status );
//var_dump($stats);
//for table
echo "<tr><td>Smoke Fire Alarm</td><td";
//0x0000000000 Smoke fire 0 means No alarm, 1 means Alarm
if (($stats[5] & 0x01) == false)
echo " >no Smoke alarm";
else
echo " >smoke alarm";
echo "</td></tr>" ;
echo "<tr><td>Door</td><td";
//$FLAG_01_DOOR = 0x0000000002; //Door Open 0 means Door Close , 1 Means Door open
if (($stats[5] & 0x02) == false)
echo " >door closed";
else
echo " >door open";
echo "</td></tr>";
echo "<tr><td>Mode</td><td";
//$FLAG_02_AUTO = 0x0000000004; //Auto/Man Mode 0 Means Auto Mode, 1 Means Man Mode
if (($stats[5] & 0x04) == false)
echo " >Auto";
else
echo " >Manual";
echo "</td></tr>";
echo "<tr><td>Load</td><td>";
//$FLAG_034_LOAD = 0x0000000018; //00 :Load on EB,01: Load on DG, 10: Load on site Battery 11: Not used
if (($stats[5] & 0x08) == false)
if (($stats[5] & 0x10) == false)
echo "[- Load on EB -]<br>"; //00
else
echo "[- Load on site Battery -]<br>"; //10
else
if (($stats[5] & 0x10) == false)
echo "[- Load on DG -]<br>"; //01
else
echo "[- Not Used -]<br>"; //11
echo "</td></tr>";
echo "<tr><td>Alternate Fault</td><td";
//$FLAG_10_ALT = 0x0000000400; //Alternate Fault
if (($stats[4] & 0x04) == false)
echo " >no fault";
else
echo " >fault";
echo "</td></tr>";
?>
【问题讨论】:
警告:mysql 扩展名是deprecated in PHP 5.5.0,在 PHP 7.0.0 中被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另见MySQL: choosing an API guide。此函数的替代方法包括:mysqli_connect() 和 PDO::__construct() 感谢您对我的认可,但它工作得非常好。我认为桌子是我要求的,如果可以的话,请帮助我吗? 您的查询显示LIMIT 1
。这意味着你只会得到一排。取下LIMIT 1
以获得更多行。
照你说的,还没来?
@APPLearener 它可能看起来在您的机器上“运行良好”,但并不安全,并且无法在任何最新的服务器上运行。你真的,真的需要从 mysql_ 更改为 pdo 或 mysqli_ 。看看那些并用它们获取多行。 mysql_在2019年被移除,只是说它已经过时了。
【参考方案1】:
它只显示 1 个项目,因为您只执行 1 个 mysql_fetch_row($result)。 也许试试这个
while($data = mysql_fetch_row($result))
//The code you have after to generate the table
文档:https://www.php.net/manual/en/function.mysql-fetch-row.php
【讨论】:
自 2019 年 PHP 7.0 以来 mysql_ 已被删除,因此您永远不应使用 mysql_ 代码回答。除此之外,错误的mysql_函数。【参考方案2】:如果您希望显示所有项目,则需要使用 while 循环
while($data = mysql_fetch_row($result))
//在此处输入您的代码
【讨论】:
自 2019 年 PHP 7.0 以来 mysql_ 已被删除,因此您永远不应使用 mysql_ 代码回答。除此之外,错误的 mysql_ 函数。您只是复制现有答案吗?以上是关于在 PHP 中显示表格的主要内容,如果未能解决你的问题,请参考以下文章
php用表格的形式显示连接的一张mysql表格,并具有直接在表格中修改、删除mysql表中数据的功能
如何在用电子表格(),php生成的.csv文件中显示带小数的整数?