使用ajax,mysql,php从数据库显示数据

时间:2018-03-10 18:26:31

标签: php jquery mysql ajax

目前,我制作了脚本,在onclick事件之后,将问题发送到数据库并在console.log(来自数组)中显示数据。这一切都正常,但..我想在我的代码中的不同位置显示数组中的数据。当我尝试使用DataType'json'然后显示一些数据时,它显示在我的console.log中。所以,我的问题是:如何解决显示数据的问题?你看到这是一个好主意吗?

下面你会看到我当前的代码:

    $(document).ready(function(){
    $(".profile").click(function(){

        var id = $(this).data('id');

        //console.log(id);
        $.ajax({
            method: "GET",
            url: "../functions/getDataFromDB.php",
            dataType: "text",
            data: {id:id},

            success: function(data){

                    console.log(data);
            }

        });

    });
});

    public function GetPlayer($id){
    $id = $_GET['id'];

    $query = "SELECT name,surname FROM zawodnik WHERE id='".$id."'";
    $result = $this->db->query($query);
    if ($result->num_rows>0) {
        while($row = $result->fetch_assoc()){
            $this->PlayerInfo[] = $row;
        }
        return $this->PlayerInfo;


    }else {
        return false;
    }
}

    $info = array();

    $id = $_GET['id'];

    $vv = new AddService();

    foreach($vv->GetPlayer($id) as $data){
        $info[0] = $data['name'];
        $info[1] = $data['surname'];
    }

    echo json_encode($info);

2 个答案:

答案 0 :(得分:0)

试试这个:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<button class="profile" data-id="1">Click</button>
<script
  src="https://code.jquery.com/jquery-3.3.1.min.js"
  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
  crossorigin="anonymous"></script>
<script>
$(document).ready(function(){

    $(".profile").click(function(){
            var id = $(this).data('id');

            console.log(id);
            $.ajax({
                    method: "GET",
                    url: "../functions/getDataFromDB.php",
                    dataType: "json",
                    data: {id:id},
                    success: function(data){
                        console.log(data);
                        $.each(data, function(idx, item) {
                            console.log(item.surname);
                        });
                    }
            });
    });

});
</script>
</body>
</html>

PHP方面:

    <?php
    class AddService {

       public function GetPlayer($id) {
            if (filter_var($id, FILTER_VALIDATE_INT) === false) {
                return false;
            }

            $query = "SELECT name, surname FROM zawodnik WHERE id={$id}";
            $result = $this->db->query($query);

        if ($result->num_rows <= 0) {
                return false;
            }

          // assumming you are using mysqli
          // return json_encode($result->fetch_all(MYSQLI_ASSOC));
          // or
          WHILE ($row = $result->fetch_assoc()) {
            $data[] = $row;
          }
          return json_encode($data);
        }
    }

    if (isset($_GET['id'])) {

        $id = $_GET['id'];

        $vv = new AddService();
            // you don't need foreach loop to call the method
            // otherwise, you are duplicating your results
        echo $vv->GetPlayer($id);
    }

答案 1 :(得分:0)

我认为最好将mysqli中的fetch_all行更改为rm -rf。数据库中的信息已经过时,或完全不正确。