在网页上的 HTML 表中显示 MySQL 数据库表中的值
Posted
技术标签:
【中文标题】在网页上的 HTML 表中显示 MySQL 数据库表中的值【英文标题】:Show values from a MySQL database table inside a HTML table on a webpage [duplicate] 【发布时间】:2013-07-27 23:17:51 【问题描述】:我想从数据库表中检索值并将它们显示在页面的 html 表中。 我已经搜索过这个但我找不到答案,虽然这肯定很容易(这应该是数据库的基础知识)。我想我搜索的术语具有误导性。 数据库表名称是tickets,它现在有6 个字段(submission_id、formID、IP、name、email 和message),但应该还有另一个字段ticket_number。 我怎样才能让它在这样的 html 表中显示来自 db 的所有值:
<table border="1">
<tr>
<th>Submission ID</th>
<th>Form ID</th>
<th>IP</th>
<th>Name</th>
<th>E-mail</th>
<th>Message</th>
</tr>
<tr>
<td>123456789</td>
<td>12345</td>
<td>123.555.789</td>
<td>John Johnny</td>
<td>johnny@example.com</td>
<td>This is the message John sent you</td>
</tr>
</table>
然后是 'john' 下面的所有其他值。
【问题讨论】:
听起来您正在寻找一些 php 和 mysql 的介绍性教程。你试过吗?谷歌搜索“PHP MySQL 教程”会返回很多结果(有些比其他的好,但仍然很多)。 这是您在“在 HTML 表格中显示结果”w3schools.com/php/php_mysql_select.asp w3schools.com/php/php_mysql_intro.asp Possibly relevant answer of mine on a later question. 【参考方案1】:了解有关 PHP 和 MySQLi 库的更多信息at PHP.net.
首先,启动与数据库的连接。为此,创建连接所需的所有字符串变量,调整它们以适应您的环境,然后使用new mysqli()
创建一个新的连接对象,并使用之前创建的变量作为其参数对其进行初始化。现在,检查连接是否有错误并显示一条消息,无论是否找到任何错误。像这样:
<?php
$servername = "localhost";
$username = "root";
$password = "yourPassword";
$database = "world";
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli($servername, $username, $password, $database);
echo "Connected successfully<br>";
?>
接下来,创建一个将查询保存为字符串的变量,在本例中,它是一个 select
语句,其中包含 100 条记录的 limit
,以保持列表较小。然后,我们可以通过从连接对象调用mysqli::query()
函数来执行它。现在,是时候显示一些数据了。首先打开<table>
到echo
标记,然后以带有mysqli::fetch_row()
的数字数组的形式一次获取一行,然后可以使用简单的for 循环显示。 mysqli::field_count
应该是不言自明的。不要忘记对每个值使用<td></td>
,并使用echo"<tr>"
和echo"</tr>
打开和关闭每一行。最后我们关闭表,以及与mysqli::close()
的连接。
<?php
$query = "select * from city limit 100;";
$queryResult = $conn->query($query);
echo "<table>";
while ($queryRow = $queryResult->fetch_row())
echo "<tr>";
for($i = 0; $i < $queryResult->field_count; $i++)
echo "<td>$queryRow[$i]</td>";
echo "</tr>";
echo "</table>";
$conn->close();
?>
【讨论】:
【参考方案2】:试试这个:(完全动态...)
<?php
$host = "localhost";
$user = "username_here";
$pass = "password_here";
$db_name = "database_name_here";
//create connection
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$connection = mysqli_connect($host, $user, $pass, $db_name);
//get results from database
$result = mysqli_query($connection, "SELECT * FROM products");
$all_property = array(); //declare an array for saving property
//showing property
echo '<table class="data-table">
<tr class="data-heading">'; //initialize table tag
while ($property = mysqli_fetch_field($result))
echo '<td>' . $property->name . '</td>'; //get field name for header
$all_property[] = $property->name; //save those to array
echo '</tr>'; //end tr tag
//showing all data
while ($row = mysqli_fetch_array($result))
echo "<tr>";
foreach ($all_property as $item)
echo '<td>' . $row[$item] . '</td>'; //get items using property value
echo '</tr>';
echo "</table>";
【讨论】:
无论查询中的列数或列名如何,都是首选方法。【参考方案3】:这是一种使用 PDO 从 MySQL 数据库中获取数据的简单方法。
define("DB_HOST", "localhost"); // Using Constants
define("DB_USER", "YourUsername");
define("DB_PASS", "YourPassword");
define("DB_NAME", "Yourdbname");
$dbc = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset-utf8mb4", DB_USER, DB_PASS);
$print = ""; // assign an empty string
$stmt = $dbc->query("SELECT * FROM tableName"); // fetch data
$stmt->setFetchMode(PDO::FETCH_OBJ);
$print .= '<table border="1px">';
$print .= '<tr><th>First name</th>';
$print .= '<th>Last name</th></tr>';
while ($names = $stmt->fetch()) // loop and display data
$print .= '<tr>';
$print .= "<td>$names->firstname</td>";
$print .= "<td>$names->lastname</td>";
$print .= '</tr>';
$print .= "</table>";
echo $print;
【讨论】:
【参考方案4】:当然更好的解决方案是动态的,这样它就可以在不知道列名的情况下适用于任何查询?
如果是这样,试试这个(显然查询应该匹配你的数据库):
// You'll need to put your db connection details in here.
$conn = new mysqli($server_hostname, $server_username, $server_password, $server_database);
// Run the query.
$result = $conn->query("SELECT * FROM table LIMIT 10");
// Get the result in to a more usable format.
$query = array();
while($query[] = mysqli_fetch_assoc($result));
array_pop($query);
// Output a dynamic table of the results with column headings.
echo '<table border="1">';
echo '<tr>';
foreach($query[0] as $key => $value)
echo '<td>';
echo $key;
echo '</td>';
echo '</tr>';
foreach($query as $row)
echo '<tr>';
foreach($row as $column)
echo '<td>';
echo $column;
echo '</td>';
echo '</tr>';
echo '</table>';
取自这里:https://www.antropy.co.uk/blog/handy-php-snippets/
【讨论】:
是的,你是对的,很抱歉造成混乱。我已经澄清并测试了以确保上述运行并且是完整的。【参考方案5】:OOP 风格: 首次连接数据库。
<?php
class database
public $host = "localhost";
public $user = "root";
public $pass = "";
public $db = "db";
public $link;
public function __construct()
$this->connect();
private function connect()
$this->link = new mysqli($this->host, $this->user, $this->pass, $this->db);
return $this->link;
public function select($query)
$result = $this->link->query($query) or die($this->link->error.__LINE__);
if($result->num_rows>0)
return $result;
else
return false;
?>
然后:
<?php
$db = new database();
$query = "select * from data";
$result = $db->select($query);
echo "<table>";
echo "<tr>";
echo "<th>Name </th>";
echo "<th>Roll </th>";
echo "</tr>";
while($row = mysqli_fetch_array($result))
echo "<tr>";
echo "<td> $row[name]</td>";
echo "<td> $row[roll]</td>";
echo "</tr>";
echo "</table>";
?>
【讨论】:
【参考方案6】:首先,连接数据库:
$conn=mysql_connect("hostname","username","password");
mysql_select_db("databasename",$conn);
您可以使用它来显示单个记录:
例如,如果 URL 是 /index.php?sequence=123
,下面的代码将从表中选择,其中序列 = 123
。
<?php
$sql="SELECT * from table where sequence = '".$_GET["sequence"]."' ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
$result=mysql_fetch_array($rs);
echo '<table>
<tr>
<td>Forename</td>
<td>Surname</td>
</tr>
<tr>
<td>'.$result["forename"].'</td>
<td>'.$result["surname"].'</td>
</tr>
</table>';
?>
或者,如果您想在表格中列出所有符合条件的值:
<?php
echo '<table>
<tr>
<td>Forename</td>
<td>Surname</td>
</tr>';
$sql="SELECT * from table where sequence = '".$_GET["sequence"]."' ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
while($result=mysql_fetch_array($rs))
echo '<tr>
<td>'.$result["forename"].'</td>
<td>'.$result["surname"].'</td>
</tr>';
echo '</table>';
?>
【讨论】:
【参考方案7】:示例取自 W3Schools:PHP Select Data from MySQL
<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
echo "Failed to connect to MySQL: " . mysqli_connect_error();
$result = mysqli_query($con,"SELECT * FROM Persons");
echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>";
while($row = mysqli_fetch_array($result))
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "</tr>";
echo "</table>";
mysqli_close($con);
?>
这是一个学习的好地方!
【讨论】:
如何处理“SELECT * FROM Persons”会导致长时间等待或内存不足的大型结果? @otc 添加LIMIT BY
子句并返回一部分。使用此基础对结果进行分页
谢谢@Jonny。这个会自动从它离开的地方恢复还是我必须跟踪订单。
@otc 你必须跟踪它。这是一个快速的谷歌,我没有通过代码:code.tutsplus.com/tutorials/…
如果您不必对每个列名进行硬编码会更好。【参考方案8】:
mysql_connect("localhost","root","");
mysql_select_db("database");
$query=mysql_query("select * from studenti");
$x=@mysql_num_rows($query);
echo "<a href='file.html'>back</a>";
echo "<table>";
$y=mysql_num_fields($query);
echo "<tr>";
for($i=0 ,$i<$y,$i++)
$values=mysql_field_name($query,$i);
echo "<th>$values</th>";
echo "</tr>";
while(list($p ,$n $your_table_list)=mysql_fetch_row($query))
print("<tr>\n".
"<td>$p</td>".
"</tr>/n");
?>
【讨论】:
【参考方案9】:<?php
$mysql_hostname = "localhost";
$mysql_user = "ram";
$mysql_password = "ram";
$mysql_database = "mydb";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Oops some thing went wrong");
mysql_select_db($mysql_database, $bd) or die("Oops some thing went wrong");// we are now connected to database
$result = mysql_query("SELECT * FROM users"); // selecting data through mysql_query()
echo '<table border=1px>'; // opening table tag
echo'<th>No</th><th>Username</th><th>Password</th><th>Email</th>'; //table headers
while($data = mysql_fetch_array($result))
// we are running a while loop to print all the rows in a table
echo'<tr>'; // printing table row
echo '<td>'.$data['id'].'</td><td>'.$data['username'].'</td><td>'.$data['password'].'</td><td>'.$data['email'].'</td>'; // we are looping all data to be printed till last row in the table
echo'</tr>'; // closing table row
echo '</table>'; //closing table tag
?>
它会像这样打印表格 逐行阅读,以便您轻松理解。..
【讨论】:
其他用户请注意:mysql_
函数在 PHP 7 中被删除,并且自 PHP 5.5 起已弃用。如果处理 PHP 7 或更高版本,请考虑使用 mysqli_
函数。以上是关于在网页上的 HTML 表中显示 MySQL 数据库表中的值的主要内容,如果未能解决你的问题,请参考以下文章
如何转换网页上的 SQL 数据,使任何作为 URL 的数据都变成超链接?
从 MySQL 数据库中检索数据并使用 java [重复] 在 html 中显示它
尝试使用 PHP 和 mysql 在 3 个 html 表中显示 87 行 mysql [关闭]