как получить правильное значение из json (php)? - PullRequest
1 голос
/ 15 марта 2020

update_modal (bootstrap)

<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 отображается успешно, но он не получает правильные значения из моей базы данных. Я нажимаю F12 на моем chrome, и он тестируется как эта фотография

enter image description here

enter image description here

1 Ответ

3 голосов
/ 15 марта 2020

Вы инициализируете $user_data в get_record.php как строку: $user_data = ' ';

Попробуйте вместо этого инициализировать эту переменную как массив: $user_data = [];

Поскольку вы инициализируете $user_data в качестве строки установка $user_data[0] устанавливает только первый символ строки в качестве первого символа значения $row['product_title'].


РЕДАКТИРОВАТЬ: Как отмечено в комментариях, вы также открываете себя SQL инъекционные атаки путем вставки опубликованных данных непосредственно в SQL здесь:

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

Вы должны экранировать все пользовательские данные, прежде чем использовать их в запросе. Один из способов сделать это для MySQL в PHP:

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

Использование подготовленных операторов будет идеальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...