如何使用 PHP 将 SQL Select 语句链接到 HTML 按钮

Posted

技术标签:

【中文标题】如何使用 PHP 将 SQL Select 语句链接到 HTML 按钮【英文标题】:How to link SQL Select statements to a HTML button using PHP 【发布时间】:2019-02-24 07:06:56 【问题描述】:

我已使用 php 连接到 mysql 数据库。该数据库是关于书籍的,具有不同的列,例如 ID、标题、作者和价格。我现在正在尝试创建链接“查看表格”、“按标题查看”和“按作者查看”,以便用户可以使用这些链接分别查看我的表格的内容。

我已经创建了三个按钮,但现在我不知道如何让它们分别显示列。下面是我的php代码:

    <!DOCTYPE html>
<html>
<head>
    <title>Books</title>
    <link rel="stylesheet" type="text/css" href="bookstyle.css">
</head>
<body>
<button>View Table</button>
<button>View by Title</button>
<button>View by Author</button>

<table>
    <tr>
        <th>Id</th>
        <th>Title</th>
        <th>Author</th>
        <th>Price</th>
    </tr>
<?php
$conn = mysqli_connect("localhost", "root", "", "my_book_collection");

// Check connection, if failed show error
if ($conn-> connect_error) 
    die("Connection failed:". $conn-> connect_error);

$sql = "SELECT id, title, author, price from books";
$result = $conn -> query($sql);

if ($result -> num_rows > 0)
// Output data for each row
    while ($row = $result -> fetch_assoc())
        echo "<tr><td>". $row["id"]. "</td><td>". $row["title"]. "</td><td>". $row["author"]. "</td><td>". $row["price"]. "</td></tr>";
    
echo "</table>";

else 
    echo "0 results";
$conn-> close();
?>

</table>
</body>
</html>

【问题讨论】:

【参考方案1】:

我自己想出来的。这可能不是最好的方法,但我所做的是创建 2 个单独的 .php 文件,一个用于作者,一个用于标题。我删除了与作者或标题无关的代码(例如:id 和 price)。所以基本上,我只是为每个表创建了一个新表,然后创建链接以分别访问每个表。每个 .php 文件都有 3 个链接“查看表”“查看作者”“查看标题”。

【讨论】:

这是一种糟糕的做法!【参考方案2】:

您需要告诉您的 SQL 语句要按哪一列排序。您可以通过链接传递它。例如

&lt;th&gt;&lt;a href="?order=author"&gt;Author&lt;/a&gt;&lt;/th&gt;

然后在你的 SQL 中更改为

'SELECT id, title, author, price FROM books ORDER BY '.$_GET['order'].' ASC'

但在您实施此之前,请阅读 SQL 注入攻击并修改您的代码以控制传递给 SQL 的值。

以下是基础知识:

if ($_GET['order'] == 'author') $order = 'author';
if ($_GET['title'] == 'title') $order = 'title';
etc.

变量只是需要一些卫生。

然后将您的 SQL 语句更改为:

'SELECT id, title, author, price FROM books ORDER BY '.$order.' ASC'

【讨论】:

对不起,我还是很困惑。您是什么意思“然后在您的 SQL 中更改为”?我正在使用的只是一个 php 文件。你的意思是在 phpMyAdmin 中?另外,我会阅读 SQL 注入谢谢 :) 更改您的 SQL 语句。 当我将其更改为您提供的语句时,我收到此错误...“解析错误:语法错误,意外 '' (T_ENCAPSED_AND_WHITESPACE),需要 '-' 或标识符 (T_STRING) 或变量 ( T_VARIABLE) 或数字 (T_NUM_STRING)" 抱歉,GET 变量需要用引号引起来SELECT id, title, author, price FROM books ORDER BY '$_GET['order']' ASC 感谢您的帮助,但我想出了另一种方法来完成它。祝福像你这样的人花时间提供帮助:)

以上是关于如何使用 PHP 将 SQL Select 语句链接到 HTML 按钮的主要内容,如果未能解决你的问题,请参考以下文章

PHP如何通过SQL语句将数据写入MySQL数据库呢?

如何在PHP中的SELECT语句中执行子查询?

将 SELECT @ 变量从 SQL 发送到 PHP

如何使用 PDO 从 PHP 中的单个 select 语句将孩子分配给父母?

SQL Select 语句,2 个表 [重复]

PL/SQL:, 如何将变量传递给 SELECT 语句并返回所有结果行