将 SQL 数据放入 HTML 表中
Posted
技术标签:
【中文标题】将 SQL 数据放入 HTML 表中【英文标题】:Putting SQL data into HTML table 【发布时间】:2013-01-10 23:16:09 【问题描述】:我正在尝试从 mysql 数据库中获取数据并将它们放入 html 表中。 在互联网上搜索了很多之后,我找不到适合我的代码。
目前,我有这个代码
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<table>
<thead>
<tr>
<td>Naam</td>
<td>Gemeente</td>
<td>Datum</td>
</tr>
</thead>
<tbody>
<?php
$db_select = mysql_select_db($dbname,$db);
if (!db_select)
die("Database selection also failed miserably: " . mysql_error());
mysql_select_db("databaseiheko");
$results = mysql_query("SELECT NaamFuif, GemeenteFuif, DatumFuif FROM tblfuiven");
while($row = mysql_fetch_array($results))
?>
<tr>
<td><?php echo $row['NaamFuif']?></td>
<td><?php echo $row['GemeenteFuif']?></td>
<td><?php echo &row['DatumFuif']?></td>
</tr>
<?php
?>
</tbody>
</table>
</body>
</html>
我唯一得到的是我表的第一行 (Naam-Gemeente-Datum)。 是我做错了什么还是忘记了什么?
【问题讨论】:
1.使用mysql_error()
检查您的查询是否有任何问题。 2. mysql_
函数已弃用。你应该切换到PDO 或mysqli
。
1.您对数据库所做的事情并不安全,请尝试包括数据库连接。 2. 你在 Datumfuif ->&row 有错字。 3.你确定db是满的吗?
您使用的是an obsolete database API,应该使用modern replacement。
<?php echo &row['DatumFuif']?>
您可能希望改用$
符号。
将!db_select
替换为!$db_select
。将&row
替换为$row
。
【参考方案1】:
首先,要记住的最重要的一点是:
您正在使用已弃用且不安全的代码
mysql_ functions are strongly discouraged,出于各种原因:
已弃用,并将在 PHP 的未来版本中删除, 不安全导致可能的 SQL 注入, 缺少当前 PHP 版本中的许多功能查看链接的问题更多更深入的解释。
现在,到代码本身:
你没有使用mysql_connect
连接到服务器
您应该使用mysql_connect
指定将用于访问数据库中数据的服务器、用户名和密码。从您的代码来看,它似乎应该存在 ,因为在 mysql_connect
函数中使用了一个 $db
变量,但没有正确初始化,也没有在其他任何地方再次使用。
你应该以类似这样的方式使用mysql_connect
:
(别忘了设置您的用户名和密码!)
您连续两次使用mysql_select_db
:
$db_select = mysql_select_db($dbname,$db);
如果(!db_select)
die("数据库选择也惨败:" .mysql_error());
紧随其后
mysql_select_db("databaseiheko");
-
注意
$dbname
和$db
变量,你的代码中没有它们,这个函数不会像这样工作。
第二个mysql_select_db
覆盖第一个,但您没有指定要使用的服务器连接。
你应该使用第一个版本,但你应该在它之前使用mysql_connect
。
您的代码中有拼写错误
if (!db_select)
应该是 if (!$db_select)
echo &row['DatumFuif']
应该是 echo $row['DatumFuif']
【讨论】:
【参考方案2】:mysql_ 函数已弃用,但如果您想使用它们,我建议进行以下更正:
您可以通过以下方式更正您的代码: 需要mysql连接:
<?php
//connect to your database
mysql_connect("serverIpAddress","userName","password");
//specify database
mysql_select_db("yourDatabaseName") or die;
//Build SQL Query
$query = "select * from tblfuiven";
$queryResult=mysql_query($query);
$numrows=mysql_num_rows($queryResult);
numrows 将包含在数据库中找到的记录数。 为行数添加一个回显,让我们知道行数是否仍然是一。 然后使用 mysql_fetch_assoc 获取行:
while($row = mysql_fetch_assoc($queryResult))
?>
<tr>
<td><?php echo $row['NaamFuif']?></td>
<td><?php echo $row['GemeenteFuif']?></td>
<td><?php echo &row['DatumFuif']?></td>
</tr>
<?php
?>
编辑:您可以使用此代码测试代码并让我们知道您获得的行数(写下您的真实用户名和密码以及数据库名称:
<?php
mysql_connect("localhost","root","root");
mysql_select_db("databaseName") or die;
$results = mysql_query("SELECT * FROM tblfuiven");
$numrows=mysql_num_rows($queryResult);
while($row = mysql_fetch_assoc($queryResult))
?>
<tr>
<td><?php echo $numrows ?></td>
<td><?php echo $row['NaamFuif']?></td>
<td><?php echo $row['GemeenteFuif']?></td>
<td><?php echo $row['DatumFuif']?></td>
</tr>
<?php
?>
【讨论】:
添加你的代码后,还是不行。当前代码 --> pastebin.com/p7J4rZek @Matt 在我的回答中有一个问题。我能知道 $numrows 的价值吗? @Matt 在 mysql_connet 你使用了 $dbhost 等,在引号内。直接在引号内写入字符串,例如“localhost”而不是“$dbhost” 当我回显某些内容时,我没有得到输出(例如:echo 'Hello World")。即使直接写入字符串后,我也会得到相同的结果。 @Matt,在另外 3 个 td 附近添加行您的问题出在 php echo 语句中。它缺少“;”。
【讨论】:
以上是关于将 SQL 数据放入 HTML 表中的主要内容,如果未能解决你的问题,请参考以下文章