【问题标题】:how to get the correct value from json (php)?如何从 json (php) 中获取正确的值?
【发布时间】:2020-03-15 15:29:33
【问题描述】:

update_modal(引导)

<div class="modal fade" id="updateModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="exampleModalLabel">Edit:</h5>
                <button class="close" type="button" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">×</span>
                </button>
            </div>
            <div class="modal-body" id="body">
                <input type="text" class="form-control" placeholder="product_title" id="title">
            </div>
            <div class="modal-footer">
                <button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button>
                <a class="btn btn-primary" href="login.php">Update</a>
            </div>
        </div>
    </div>
</div>

触发 update_modal(bootstrap)

    <td>
       <a data-toggle='modal' data-target='#updateModal'>
       <button class='btn btn-success' id='edit' data-id='$product_no'>Edit</button>
       </a>
    </td>

js

  <script>
      $(document).ready(function() {
          $(document).on('click','#edit',function () {
              let id=$(this).attr('data-id');
              // console.log(id);
              $.ajax({
                  url:'get_record.php',
                  method:'post',
                  data:{
                      p_no:id
                  },
                  dataType:'JSON',
                  success:function (data) {
                        // $('#body').html(data);
                      console.log(data[0]);
                      console.log(data[1]);
                      console.log(data[2]);
                  }

              });
          });
      })

  </script>

get_record.php

<?php
include ("db.php");
 global $conn;
if (isset($_POST['p_no'])){
    $p_no=$_POST['p_no'];
    $query="select * from products where p_no='$p_no'";
    $result=mysqli_query($conn,$query);
    while($row=mysqli_fetch_array($result)){
        $user_data=' ';
        $user_data [0]=$row['product_title'];
        $user_data [1]=$row['date'];
        $user_data [2]=$row['product_price'];
//        echo $pro_title;
    }
    echo json_encode($user_data);
}

我的问题是当我单击编辑按钮时,update_modal 成功显示,但它没有从我的数据库中获取正确的值。我在我的 chrome 上单击 F12 并像这张照片一样进行了测试

【问题讨论】:

  • data = jQuery.parseJSON(data) 然后使用它
  • 您很容易受到sql injection 攻击。
  • 是的,我是大一新生,我需要更加努力地学习。谢谢,建议。@AhmedSunny @Andreas

标签: php jquery json


【解决方案1】:

您正在将get_record.php 中的$user_data 初始化为字符串:$user_data = ' ';

尝试将该变量初始化为数组:$user_data = [];

因为你将$user_data初始化为字符串,所以设置$user_data[0]只会将字符串的第一个字符设置为值$row['product_title']的第一个字符。


编辑:正如 cmets 中所述,您还可以通过在此处将发布的数据直接插入您的 SQL 中来使自己受到 SQL 注入攻击:

$p_no=$_POST['p_no'];
$query="select * from products where p_no='$p_no'"

在查询中使用它们之前,您应该转义所有用户输入。在 PHP 中为 MySQL 执行此操作的一种方法:

$p_no=mysqli_real_escape_string($_POST['p_no']);
$query="select * from products where p_no='$p_no'"

使用prepared statements 是理想的选择。

【讨论】:

  • @donghero 防止 sql 注入的唯一真正答案是准备好的语句!
猜你喜欢
  • 2014-12-21
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 2016-07-07
  • 2020-08-16
  • 1970-01-01
相关资源
最近更新 更多