如何在php/html输出中显示mysql表列标题?

如何在php/html输出中显示mysql表列标题?,php,html,mysql,Php,Html,Mysql,2个问题 情景: 我想通过一个表单查询我的数据库表,然后显示出现的结果(如果有结果),我目前的情况是,它确实可以工作,但它会完全清除表单,并将我的表保留到一个只有结果的空页面(如果有意义的话)。我希望在输入表单数据的同一页面上查看结果。 我希望以基于表格的格式查看我的数据,有点像这样 |Name | Age| |-------|----| |Anthony| 20 | 我有一个单独的设计,使它看起来很漂亮以后。 这是我目前的设置 displayform.html: <html>

2个问题

情景:

我想通过一个表单查询我的数据库表,然后显示出现的结果(如果有结果),我目前的情况是,它确实可以工作,但它会完全清除表单,并将我的表保留到一个只有结果的空页面(如果有意义的话)。我希望在输入表单数据的同一页面上查看结果。 我希望以基于表格的格式查看我的数据,有点像这样

|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.*
    而不是
    mysql.*
    API
将它们形成一个文件,如下所示(
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>";
}
?>