如何在不知道 $row 像 phpmyadmin 的情况下将 mysql 表数据输出到 html 表中
Posted
技术标签:
【中文标题】如何在不知道 $row 像 phpmyadmin 的情况下将 mysql 表数据输出到 html 表中【英文标题】:how to output mysql table data into an html table without knowing what $row is like phpmyadmin 【发布时间】:2019-08-01 01:03:34 【问题描述】:好的,所以我正在尝试创建一个与 phpmyadmin 具有相同基本功能的 localhost 站点,并且除了显示表的数据之外一切正常。
这是我想要完成的一个示例:
虽然我不确定如何做到这一点。这是一些代码,可以向您展示我现在拥有的东西
<div class="content">
<?php $query2 = "SELECT * FROM " . $table; ?>
<div class="query-class">
<?php echo $query2; ?>
</div>
<h1>
Tables In <?php echo $db; ?>
</h1>
<table>
<?php
$columquery = "SHOW COLUMNS FROM " . $table;
$columresult = mysql_query($columquery);
while ($row3 = mysql_fetch_array($columresult))
echo "<th>" . $row3['Field'] . "</th>";
?>
<?php
$result2 = mysql_query($query2);
while ($row2 = mysql_fetch_array($result2))
foreach($row2 as $var)
echo "<tr><td>" . $var . "</td></tr>";
?>
</table>
</div>
是的,是的,我知道这很可怕。
【问题讨论】:
您正在存储纯文本密码和哈希?? 这段代码会发生什么?你的问题在哪里?请停止使用mysql_
函数。使用和更新驱动程序。另外取决于$table
和$db
的定义方式,这可能是一个非常危险的脚本。
描述或展示。密码不应该被加密,它们应该被散列。
mysql_query
api 已被弃用,并且在版本 7 之后已从 PHP 中完全删除。代码容易受到利用 - 引入 mysqli
并为此准备声明可能是明智之举深入了解之前的过程?
"代码容易被利用" — 老实说,代码看起来有点像恶意软件。无意冒犯,但我在受感染的服务器上看到了很多这样的东西。你为什么还要写它?如果您需要 phpmyadmin 功能,只需使用 phpmyadmin
【参考方案1】:
其他答案使用mysqli
API,而您使用的是旧的,不再受支持的mysql
API。我真的建议升级到mysqli
或PDO
,但如果您想继续使用mysql
,您可以使用以下解决方案:
<div class="content">
<?php $query2 = "SELECT * FROM " . $table; ?>
<div class="query-class">
<?php echo $query2; ?>
</div>
<h1>
Tables In <?php echo $db; ?>
</h1>
<table>
<?php
$shouldOutputHeaders = true;
$result2 = mysql_query($query2);
while ($row2 = mysql_fetch_assoc($result2))
if ($shouldOutputHeaders)
echo "<tr>";
foreach (array_keys($row2) as $header)
echo "<th>" . $header . "</th>";
echo "</tr>";
$shouldOutputHeaders = false;
echo "<tr>";
foreach ($row2 as $var)
echo "<td>" . $var . "</td>";
echo "</tr>";
?>
</table>
</div>
【讨论】:
【参考方案2】:我添加了一些转义,只在需要时查询数据库:
// Print table tags
echo "<table>";
// Print out records
$q = mysql_query("SELECT * FROM $table;");
if($res = $result->fetch_all(MYSQLI_ASSOC))
// Print out columns
$columns = array_keys($res[0]);
echo'<tr><th>'.implode('</th><th>', array_map('htmlspecialchars',$columns).'</th></tr>';
// Print out table data
echo'<tr><td>'.implode('</td><td>', array_map('htmlspecialchars',$res).'</td></tr>';
else
// IFF there is no data, print out columns
$q = mysql_query("SHOW COLUMNS FROM $table;");
if($res = $result->fetch_all(MYSQLI_ASSOC))
// Print columns
echo'<tr><th>'.implode('</th><th>', array_map('htmlspecialchars',$res).'</th></tr>';
echo '</table>';
希望对你有帮助,
【讨论】:
【参考方案3】:我认为您正在寻找像下面这样非常丑陋的东西。我在垃圾箱里找到的。我对它的任何使用概不负责:
<?php
$db=Db::getConnection(); // singleton
$this->var['result']=$db->query($_POST['query']);
if (isset($this->var['result']))
echo '<table cellpadding="5" cellspacing="2" border="1"><tbody>';
$titles=array_keys(@$this->var['result'][0]);
echo '<tr>';
foreach($titles as $title)
echo '<th>'.$title.'</th>';
echo '</tr>';
foreach($this->var['result'] as $row)
echo '<tr>';
foreach($row as $cell)
echo '<td>'.$cell.'</td>';
echo '</tr>';
echo '</tbody></table>';
?>
Db 是包含 mysqli 私有对象的标准单例。 query() 包含类似
$sql = $this->mysqli->query($query);
$this->lastInsertId = $this->mysqli->insert_id;
$errno = $this->mysqli->connect_errno;
if ($errno === 0)
if ($this->mysqli->field_count > 0)
while ($row = $sql->fetch_assoc()) $response[] = $row;
return $response;
else
return true;
创建“数组数组”响应。适合您正在寻找的输出。
【讨论】:
【参考方案4】:如果我理解你的话,你需要 mysqli_fetch_row。
$q= "SELECT * FROM table";
$result = $mysqli->query($q)
while ($row = $result->fetch_row())
print ("$row[0], $row[1]);
【讨论】:
以上是关于如何在不知道 $row 像 phpmyadmin 的情况下将 mysql 表数据输出到 html 表中的主要内容,如果未能解决你的问题,请参考以下文章
如何在不影响 phpMyAdmin 的情况下从 mysql 中巧妙地删除 pma 表
如何在不删除数据库的情况下删除 phpMyAdmin 中数据库中所有表的内容?