【发布时间】:2021-01-09 11:06:23
【问题描述】:
所以我正在建立一个网站,我需要访问一个包含产品信息的表格
我用来导航到页面
<a href="productDetails.php?table=FeaturedProducts&id=1" >
然后在产品详细信息页面中我使用它来运行 php 查询
<?php
require "connection.php";
$table = $_GET["table"];
$id = $_GET["id"];
$sql = "select * from '.$table.' where ID = '.$id.'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
$pname= $row['Product_name'];
?>
这似乎不起作用,请告诉我如何做到这一点。
【问题讨论】:
-
这能回答你的问题吗? Selecting data from SQL Server Using PHP
-
参考:Bobby Tables 或更正式:SQL Injection。因此,请在继续之前阅读大量内容。
-
从查询文本中删除所有单引号字符和点。或者用单引号向后替换外部 dquote 字符。
-
我建议阅读字符串(以及连接如何工作)in the manual。这是您需要锁定的 PHP 的基本部分,否则您将在此过程中遇到更多问题。但是,在这种情况下,您应该使用参数化的prepared statements,而不是直接在查询中使用完全未转义的用户数据。 永远永远永远相信用户输入。
-
正如其他人所说,这是构建查询的完全错误的方式。您的代码容易受到 SQL 注入攻击。您应该使用参数化查询和准备好的语句来帮助防止攻击者通过使用恶意输入值来破坏您的数据库。 bobby-tables.com 给出了风险解释,以及如何使用 PHP / mysqli 安全地编写查询的一些示例。 切勿将未经处理的数据直接插入您的 SQL 中。按照您现在编写代码的方式,有人可以轻松窃取、错误更改甚至删除您的数据。