如何在php/html输出中显示mysql表列标题?
2个问题 情景: 我想通过一个表单查询我的数据库表,然后显示出现的结果(如果有结果),我目前的情况是,它确实可以工作,但它会完全清除表单,并将我的表保留到一个只有结果的空页面(如果有意义的话)。我希望在输入表单数据的同一页面上查看结果。 我希望以基于表格的格式查看我的数据,有点像这样如何在php/html输出中显示mysql表列标题?,php,html,mysql,Php,Html,Mysql,2个问题 情景: 我想通过一个表单查询我的数据库表,然后显示出现的结果(如果有结果),我目前的情况是,它确实可以工作,但它会完全清除表单,并将我的表保留到一个只有结果的空页面(如果有意义的话)。我希望在输入表单数据的同一页面上查看结果。 我希望以基于表格的格式查看我的数据,有点像这样 |Name | Age| |-------|----| |Anthony| 20 | 我有一个单独的设计,使它看起来很漂亮以后。 这是我目前的设置 displayform.html: <html>
|Name | Age|
|-------|----|
|Anthony| 20 |
我有一个单独的设计,使它看起来很漂亮以后。
这是我目前的设置
displayform.html:
<html>
<form method="post" name="display" action="display.php" />
Enter the name you like to display the data from MySQL:<br>
<input type="text" name="name" />
<input type="submit" name="Submit" value="display" />
</form>
</html>
输入要显示MySQL数据的名称:
和display.php
<?php
mysql_connect("localhost", "toor", "FakePassword") or die("Connection Failed");
mysql_select_db("FakeDatabase")or die("Connection Failed");
$name = $_POST['name'];
$query = "select name, age from test WHERE name = '$name'";
$result = mysql_query($query);
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<tr>";
echo "<td>".$line['name']."</td>";
echo "<td>".$line['age']."</td>";
echo "<br>\n";
echo "</tr>";
}
?>
注意:
- 您只需从中生成一个文件即可实现所需的输出
- 用于清理传递的值以防止
- 您应该使用
而不是mysqli.*
APImysql.*
display.php
):
如果需要列名称,则必须使用此查询:
SHOW columns FROM test
这是一个有效的例子
另外,要小心。如果您没有收到,我的web服务器会向我的屏幕抛出警告:
mysql扩展已被弃用,将来将被删除:使用或取而代之
<?php
mysql_connect("localhost", "toor", "FakePassword") or die("Connection Failed");
mysql_select_db("FakeDatabase")or die("Connection Failed");
$query = "SHOW COLUMNS FROM test";
$result = mysql_query($query);
echo "<tr>";
while ($header = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<td>". $header['Field']."</td>";
}
echo "<br>\n";
echo "</tr>";
$name = $_POST['name'];
$query = "select name, age from test WHERE name = '$name'";
$result = mysql_query($query);
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<tr>";
echo "<td></td>";
echo "<td>".$line['name']."</td>";
echo "<td>".$line['age']."</td>";
echo "<br>\n";
echo "</tr>";
}
?>
编辑
我回答了问题标题中描述的主要问题。下次,你应该发布一个问题。。。每个问题。祝你好运。你应该使用ajax,如果我错了,请纠正我。当用户提交表单时,它将显示来自数据库的结果,但您仍然想要上面的表单?不需要ajax您只需要在一个页面上同时使用表单和php,将表单提交到同一页面,根据需要运行php。如果您正在学习,最好尽快从mysql_uu函数切换到mysqli或PDO。非常感谢你的投入,洛根。我更好地使用了mysqli设置,出于安全目的,它肯定更好。非常感谢您的评论,这些评论对我帮助很大。非常感谢您的输入,特别是关于“显示专栏”的提示。我认为第二个问题不大,所以我把它全部放在一个问题上。回答这些小问题对每个人来说都是一件麻烦事。
<?php
/* ESTABLISH YOUR CONNECTION FIRST */
$con = new mysqli("localhost", "toor", "FakePassword", "FakeDatabase");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if(!empty($_POST["name"])){
if($stmt = $con->prepare("SELECT name, age FROM test WHERE name = ?")){
$stmt->bind_param("s",$_POST["name"]); /* BIND THE PASSED-ON VALUE TO THE QUERY */
$stmt->execute(); /* EXECUTE THE QUERY */
$stmt->bind_result($name,$age); /* BIND THE RESULT TO THESE VARIABLES */
echo "<table>";
while($stmt->fetch()){ /* FETCH ALL RESULTS */
echo "<tr>";
echo "<td>".$name."</td>";
echo "<td>".$age."</td>";
echo "<br>\n";
echo "</tr>";
} /* END OF WHILE LOOP */
echo "</table>";
$stmt->close();
} /* END OF PREPARED STATEMENT */
} /* END OF NOT EMPTY NAME */
?>
<?php
mysql_connect("localhost", "toor", "FakePassword") or die("Connection Failed");
mysql_select_db("FakeDatabase")or die("Connection Failed");
$query = "SHOW COLUMNS FROM test";
$result = mysql_query($query);
echo "<tr>";
while ($header = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<td>". $header['Field']."</td>";
}
echo "<br>\n";
echo "</tr>";
$name = $_POST['name'];
$query = "select name, age from test WHERE name = '$name'";
$result = mysql_query($query);
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<tr>";
echo "<td></td>";
echo "<td>".$line['name']."</td>";
echo "<td>".$line['age']."</td>";
echo "<br>\n";
echo "</tr>";
}
?>