【发布时间】:2017-12-25 04:49:20
【问题描述】:
大家好,我是 php 新手,我刚开始学习它我正在使用 xampp 本地服务器制作一个简单的电子商务网站,当我使用 get 方法检索一行的特定 ID 时,我遇到了这个问题:
if (isset($_GET['id'])) {
$id = mysqli_real_escape_string($_GET['id']);
$sql = "SELECT * FROM items WHERE id= '$id'" ;
$run = mysqli_query($conn, $sql) or die ('error');
while($row=mysqli_fetch_array($run, MYSQLI_ASSOC)){
$discounted_price = $row['item_price'] - $row['item_discount'];
echo "
<div class='col-md-6'>
<h3 class='pp-title'>$row[item_title]</h3>
<img src='$row[item_image]' class='img-responsive' >
<div class='bottom'>
<div class='pull-right cutted-price text-muted'><del>$ $row[item_price]</del></div>
<div class='clearfix'></div>
<div class='pull-right disscounted-price'>$$discounted_price</div>
</div>
<h4 class='pp-dsc-title'>Description</h4>
<div class='pp-dsc-detail'>$row[item_description]</div>
</div>
";
}
}else {
echo "The request is not working";
}
我尝试访问的网址如下:
http://localhost/ec/items.php?item_title%20=%20Beautiful-brown-Watch&id%20=%201
如果我从上面删除 if 语句并简单地在查询中写入 id = '1' 或 '2' 数据出现在网页上,但当我这样做时,我会得到 else 输出“请求不起作用”一个特定的 ID 它不起作用我使用 mysqli_real_escape_string 来摆脱 SQL 注入,如果这不是摆脱 SQL 注入的正确方法,那么请指导我。
【问题讨论】:
-
否
mysqli_real_escape不是避免 SQL 注入的方法。这个answer 有你需要知道的一切 -
谢谢,我会试试这个准备好的语句
-
您的错误消息意味着
id参数在$_GET中不存在。您是否使用http://localhost/foo.php?id=X之类的名称调用您的 PHP 页面? (其中 X 是你想要的 id ) -
是的,没错
-
@litelite 这是我的链接localhost/ec/…