Php 从数据库获取id的请求无效

Php 从数据库获取id的请求无效,php,mysqli,xampp,Php,Mysqli,Xampp,大家好我是php新手我刚开始学习它我正在使用xampp local server创建一个简单的电子商务网站当我使用get方法检索行的特定id时,我遇到了这个问题: if (isset($_GET['id'])) { $id = mysqli_real_escape_string($_GET['id']); $sql = "SELECT * FROM items WHERE id= '$id'" ; $run

大家好我是php新手我刚开始学习它我正在使用xampp local server创建一个简单的电子商务网站当我使用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";
            } 

我正在获取else输出“请求不起作用”如果我删除上面的if语句,只需在查询id='1'或'2'中写入数据,数据就会显示在网页上,但当我为特定id执行操作时,它不起作用,我使用mysqli\u real\u escape\u字符串来摆脱SQL注入如果这不是摆脱SQL注入的正确方法,请指导我

您正在检查
$\u GET
变量
id
,但您正在根据链接传入参数
项\u id

除此之外,您的查询字符串参数中还有额外的空格,这导致您在URL中看到奇怪的
%20
,因此请去掉这些空格

要使其正常工作,您需要将URL更改为:

http://localhost/ec/items.php?item_title=Beautiful-brown-Watch&id=1 
或将代码更新为:

if(isset($_GET['item_id'])) {
   $id = mysqli_real_escape_string($_GET['item_id']);
您还需要检查参数化查询,因为
mysqli\u real\u escape\u string()
不是保证自身安全的方法


在这里可以找到一篇关于这方面的好文章

您正在检查
$\u GET
变量
id
,但是您正在根据链接传递参数
项id

除此之外,您的查询字符串参数中还有额外的空格,这导致您在URL中看到奇怪的
%20
,因此请去掉这些空格

要使其正常工作,您需要将URL更改为:

http://localhost/ec/items.php?item_title=Beautiful-brown-Watch&id=1 
或将代码更新为:

if(isset($_GET['item_id'])) {
   $id = mysqli_real_escape_string($_GET['item_id']);
您还需要检查参数化查询,因为
mysqli\u real\u escape\u string()
不是保证自身安全的方法


在这里可以找到一篇关于这方面的好文章

当您传递一个名为
item\u id
的参数时,您的代码需要一个名为
id
的参数将URL更改为

它应该会起作用


还请注意,在创建URL时,不应包含任何空格。

您的代码需要一个名为
id
的参数,而您要传递一个名为
item\u id
的参数,将URL更改为

它应该会起作用


另外请注意,创建URL时不应包含任何空格。

No
mysqli\u real\u escape
不是避免SQL注入的方法。这是您需要知道的所有信息谢谢我将尝试此准备好的语句您的错误消息意味着参数
id
不在
$\u GET
中。您是否使用类似
http://localhost/foo.php?id=X
?(其中X是您想要的id)是的,没错@litelite这是我的链接否
mysqli\u real\u escape
不是避免SQL注入的方法。这是您需要知道的所有信息谢谢我将尝试此准备好的语句您的错误消息意味着参数
id
不在
$\u GET
中。您是否使用类似
http://localhost/foo.php?id=X
?(其中X是你想要的id)是的,没错@litelite这是我的链接