我正在尝试创建一个页面,在其中输入一个 MYSQL 查询:SELECT column1,column2 FROM table;
,并动态创建一个带有列标题的 HTML 表。
编辑:删除了我的大部分问题,只留下了问题部分。从那以后,我创建了一个执行此操作的脚本并将其作为答案包含在内。我希望其他人像我一样使用它(当我懒得登录phpmyadmin时......哈哈哈)。
我会尝试mysql_fetch_assoc
返回一个关联数组(地图)。然后您可以使用 array_keys 来获取列名。
这听起来可能与测试有关,有时您只需要吐出结果即可在屏幕上看到它们,所以我将把它放在这里......
php 类 dbug 是一个很棒的工具,可以快速从 php 数组甚至是 MySQL 结果中获取格式良好的表格:
好。以下是我完成此操作的方法,基于 webjprgm 使用 mysql_fetch_assoc 的提示:
php code to dynamically create a table with column titles, from PHP to mysql to html! :)
<head>
<title>mysql Table maker</title>
</head>
<body>
<center>
<?php
/* posted data sent to this page (from this page)*/
$pdatabase = htmlentities($_POST['database'], ENT_QUOTES); // database
$phost = htmlentities($_POST['host'], ENT_QUOTES); // host
$puser = htmlentities($_POST['user'], ENT_QUOTES); // user
$ppassword = htmlentities($_POST['password'], ENT_QUOTES); // password
$pcolumns = htmlentities($_POST['columns'], ENT_QUOTES); // comma seperated columns
$columns = explode(",",$pcolumns); // array of column names
$ptable = htmlentities($_POST['table'], ENT_QUOTES); // table
$pwhere = str_replace(array(";",'"'),array('',''),$_POST['where']); // WHERE clause
if (!empty($pwhere)) {$pwhere = "WHERE $pwhere";} // if not empty, prepend with "WHERE"
$porder = htmlentities($_POST['order'], ENT_QUOTES); // ORDER BY clause
$psort = htmlentities($_POST['sort'], ENT_QUOTES); // SORTING (asc or desc)
if (!empty($porder)) {$porder = "ORDER BY $porder $psort";} // if order is not empty, prepend with "ORDER BY"
$pgroup = htmlentities($_POST['group'], ENT_QUOTES); // GROUP BY clause
if (!empty($pgroup)) {$pgroup = "GROUP BY $pgroup";} // if not empty, prepend with "GROUP BY"
$plimit = htmlentities($_POST['limit'], ENT_QUOTES); // LIMIT clause
if (!empty($plimit)) {$plimit = "LIMIT $plimit";}
/* The finished product....or query...so to speak...if you will */
$query = "SELECT $pcolumns FROM $ptable $pwhere $pgroup $porder $plimit";
/* Safety precautions */
$query = str_replace(array("delete","drop","update","alter"),array('','','',''),$query);
// print_r($columns);
?>
<form action="mysql-table.php" method="POST">
<span style="position:fixed;top:0;left:0;width:100%;height:30px;background:#35AFE3">
host: <input name="host" type="text" value="<?php echo $phost;?>"/>
user: <input name="user" type="text" value="<?php echo $puser;?>"/>
password: <input name="password" type="password" value="<?php echo $ppassword;?>"/>
database: <input name="database" type="text" value="<?php echo $pdatabase;?>"/>
</span>
<hr/>
<span style="position:fixed;top:30px;left:0;width:100%;height:205px;background:#35FC39;">
SELECT
<input name="columns" type="text" value="<?php echo $pcolumns;?>"/><br/>
FROM
<input name="table" type="text" value="<?php echo $ptable; ?>"/><br/>
WHERE
<input name="where" type="text" value="<?php echo trim(str_replace("WHERE","",$pwhere)); ?>"/><br/>
ORDER BY
<input name="order" type="text" value="<?php echo trim(str_replace("ORDER BY","",$porder)); ?>"/><br/>
SORT
<select name="sort">
<option value=""></option>
<option value="ASC">ASC</option>
<option value="DESC">DESC</option>
</select><br/>
GROUP BY
<input name="group" type="text" value="<?php echo trim(str_replace("GROUP BY","",$pgroup)); ?>"/><br/>
LIMIT
<input name="limit" type="text" value="100"/><br/>
GO:
<input type="submit" value="submit" />
</span>
</form>
<span style="position:absolute;top:235px;left:0;width:100%;height:auto;background:#28c7d6;z-index:-1;">
<?php
if (!empty($_POST['columns']) && !empty($_POST['table'])) {
echo "<h3><b>Query:</b> <i>$query</i></h3><hr/>";
$mysqli = new mysqli($phost,$puser,$ppassword,$pdatabase); // Connect to DB
/* check connection */ // check for connection error
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if ($result = $mysqli->query($query)) {
echo "<table border='1' style='word-wrap:break-word'>"; // New table
/* Column Title */
echo "<tr>"; // New Row for the titles
foreach($columns as $c) { // For each column, create a column
echo "<td><b>$c</b></td>\r\n";
}
echo "</tr>"; // Close the titles' row
/* DATA RESULTS */
while ($row = $result->fetch_assoc()) { // for each set of rows:
echo "<tr>\r\n\r\n"; // create new row
foreach($columns as $c) { // for each column in the row:
// create a cell
echo "
<td style='max-width:400px;'>
<div style='max-height:300px;overflow-y:auto;'>
$row[$c]
</div>
</td>";
}
echo "</tr>"; // end of that row
} // end foreach results
echo "</table>"; // closing of the table
/* free result set */
$result->free();
} else {
echo "query failed.<hr/>";
}
/* close connection */
$mysqli->close();
} elseif (isset($_POST['columns']) || isset($_POST['table'])) { // end of !empty columns,table
echo "<b>MISSING IMPORTANT INFORMATION.<br/>
For column, you entered: <u> ".$_POST['columns']." </u><br/>
For table you entered: <u> ".$_POST['table']." </u>";
}
?>
</span>
</center>
</body>