javascript - PHP tidak berjaya memadam data Tolong bantu.
某草草
某草草 2017-05-16 13:01:04
0
8
733

Selepas mengklik butang padam, data yang dipilih hilang dari halaman Nampaknya telah dipadamkan, tetapi ia akan dipaparkan semula selepas menyegarkan semula data dalam jadual pangkalan data, sila tidak dipadamkan lihat data saya Apa yang salah dengan kod itu?

Tindakan penghalaan asal ialah parameter dalam url Ini ialah ralat $action dalam data.php Sekarang mesej ralat telah diubah suai, tetapi data masih tidak boleh dipadamkan daripada pangkalan data. Kain bulu? Bagaimanakah saya harus nyahpepijat kod dalam php?

Selepas pengubahsuaian:
php:

//Buat laluan Tindakan ialah parameter dalam url Ini ialah baris 6 $action dalam data.php.
    $action = $_GET['action'];

    suis($action) {
        kes 'init_data_list':
            init_data_list();
            pecah;
        kes 'tambah_baris':
            add_row();
            pecah;
        kes 'del_row':
            del_row();
            pecah;
        kes 'edit_row':
            edit_row();
            pecah;
    }

//Padam kaedah, bagaimana saya menyahpepijat php dalam penyemak imbas? Bagaimanakah saya boleh melihat sama ada kaedah ini telah dilaksanakan?
    fungsi del_row(){
        //ujian
        /*gema "ok!";*/
        
        //Terima parameter yang dikembalikan
        $rowId = $_GET['rowId'];
        $sql = "padam daripada t_users di mana user_id='$rowId'";
        
        if(query_sql($sql)){
            echo "ok!";
        }lain{
            echo "Pemadaman gagal!";
        }
    }

Selepas pengubahsuaian:
Halaman hadapan JS:

var $table = $('#table'),
    $remove = $('#remove');

$(fungsi() {
    searchData();
    delData();
});

fungsi delData() {
                $remove.on('klik', function() {
                    if(confirm("Adakah anda mahu meneruskan pemadaman")) {
                        var rows = $.map($table.bootstrapTable('getSelections'), function(row) {
                            //Kembalikan nombor indeks baris yang dipilih
                            kembali row.user_id;
                        });
                    }
                    
                    $.map($table.bootstrapTable('getSelections'),function(row){
                        var del_url = "./php/data.php";
                        //Padam data berdasarkan userId, kerana id ini ialah parameter yang dihantar ke pelayan
                        var rowId = row.user_id;
                        
                        //Mengikut keperluan PHP, del_row perlu dihantar kembali untuk mengaktifkan kaedah pemadaman.
                        /*var dataParam = {
                            tindakan: "del_row",
                            rowId:rowId
                        };*/
                        
                        $.ajax({
                            taip: "padam",
                            url:del_url + "?action=del_row&rowId=" + rowId,
                            dataType:"html",
                            contentType: 'application/json;charset=utf-8',
                            kejayaan: fungsi(data) {
                                $table.bootstrapTable('remove',{
                                    medan: 'user_id',
                                    nilai: baris
                                });
                                $remove.prop('disabled', true);
                            },
                            ralat:fungsi(data){
                                alert('Pemadaman gagal!');
                            }
                        });
                    });
                })
            }

Selepas pengubahsuaian:
Dilihat dalam Pengepala dalam Rangkaian, ia dipaparkan sebagai: 200

URL Permintaan:http://localhost/muke/php/data.php?action=del_row&rowId=1
Kaedah Permintaan: PADAM
Kod Status:200 OK
Alamat Jauh:[::1]:80

Parameter Rentetan Pertanyaan
tindakan:del_row
rowId:1

Pratonton dalam Rangkaian, mesej ralat asal ialah: tindakan dalam data.php pada baris 6

Tiada apa-apa sekarang, ia kosong

Lihat Respons dalam Rangkaian, mesej ralat asal ialah: tindakan dalam data.php pada baris 6

Tiada apa-apa sekarang, ia kosong

Menggunakan Rest Client untuk menguji, hasilnya ialah 200, tetapi data yang dikembalikan masih gagal padam! Ia benar-benar membunuh saya. Saya tidak dapat mengetahui apa yang salah dan mengapa ia tidak boleh dipadamkan dari maklumat pemulangan, kaedah del_row() dalam PHP mungkin tidak dilaksanakan, bukan?
< br>

Apakah yang perlu saya lakukan?

Laksanakan pernyataan SQL dalam pangkalan data: padam daripada t_users di mana user_id='1' Gesaan adalah bahawa pemadaman berjaya, tetapi pelaksanaan tidak berjaya pada halaman Adakah kerana parameter yang dihantar kembali tidak diterima.
< /p>

某草草
某草草

membalas semua(8)
phpcn_u1582

Untuk meringkaskan, terdapat 4 kesalahan di atas:

  1. Parameter yang dikembalikan melalui pemadaman hanya boleh diperoleh menggunakan $_GET

  2. padam Parameter yang dikembalikan mesti diletakkan dalam URL, bukan dalam badan;

  3. Pernyataan SQL mesti mahir, satu langkah yang salah akan membawa kepada langkah yang salah;
  4. Untuk melaksanakan pernyataan SQL dalam pangkalan data untuk menyemak sama ada pernyataan itu dilaksanakan dengan betul, gunakan Rest Client untuk menguji sama ada permintaan URL adalah betul
  5. Berikut ialah kod saya yang betul Walaupun ia ditulis dengan buruk, ia boleh dilaksanakan tanpa ralat.

php

<?php
    //测试php是否可以拿到数据库中的数据
    /*echo "44444";*/
    
    //做个路由 action为url中的参数
    $action = $_GET['action'];

    switch($action) {
        case 'init_data_list':
            init_data_list();
            break;
        case 'add_row':
            add_row();
            break;
        case 'del_row':
            del_row();
            break;
        case 'edit_row':
            edit_row();
            break;
    }

//删除方法
    function del_row(){
        //测试
        /*echo "ok!";*/
        
        //接收传回的参数
        $rowId = $_GET['rowId'];
        $sql = "delete from t_users where user_id='$rowId'";
        
        if(query_sql($sql)){
            echo "ok!";
        }else{
            echo "删除失败!";
        }
    }
?>
Halaman JS bahagian hadapan:

var $table = $('#table'),
    $remove = $('#remove');

    $(function() {
        searchData();
        delData();
    });

function delData() {
                $remove.on('click', function() {
                    if(confirm("是否继续删除")) {
                        var rows = $.map($table.bootstrapTable('getSelections'), function(row) {
                            //返回选中的行的索引号
                            return row.user_id;
                        });
                    }
                    
                    $.map($table.bootstrapTable('getSelections'),function(row){
                        var del_url = "./php/data.php";
                        //根据userId删除数据,因为这个id就是 传给服务器的参数
                        var rowId = row.user_id;
                        
                        $.ajax({
                            type:"delete",
                            url:del_url + "?action=del_row&rowId=" + rowId,
                            dataType:"html",
                            contentType: 'application/json;charset=utf-8',
                            success: function(data) {
                                $table.bootstrapTable('remove',{
                                    field: 'user_id',
                                    values: rows
                                });
                                $remove.prop('disabled', true);
                            },
                            error:function(data){
                                alert('删除失败!');
                            }
                        });
                    });
                })
            }

Kaedah awam, log masuk ke pangkalan data:

function query_sql(){
        $mysqli = new mysqli("127.0.0.1", "root", "root", "crud");
        $sqls = func_get_args();
        foreach($sqls as $s){
            $query = $mysqli->query($s);
        }
        $mysqli->close();
        return $query;
    }
洪涛


Anda menyerahkan permintaan menggunakan kaedah padam, jadi bahagian belakang tidak boleh menerima parameter menggunakan $_GET dan $_POST.

Parameter padam hendaklah diletakkan dalam url:

if($_SERVER['REQUEST_METHOD'] == 'DELETE') {
    //参数包含在请求url中
    $uri = $_SERVER['REQUEST_URI'];
}
迷茫

Sepatutnya $userId = $_POST['rowId']; betul

"DELETE FROM `t_user` where `user_id` = '.$userId'" 

Sedikit lagi

大家讲道理

Cetak $_GET, sepatutnya parameter tidak lulus

过去多啦不再A梦

Anda ambil action放在body里了,自然$_GET就取不到action了,要用$_POST
看你都用了DELETE方式提交了,不如改成restful...

Ty80
$sql = "DELETE FROM `t_user` where `user_id` = '".$userId."';";

Adakah terdapat masalah dengan pernyataan sql? Cetaknya apabila program berjalan, salin ke pangkalan data dan jalankan ujian sekali.

習慣沉默

Cetak pertama $_GET untuk melihat apa yang ada?

Tempat awak ini sangat pelik, cuba tukar dataType kepada json

Sebab ralat adalah kerana parameter tindakan tidak ditemui

左手右手慢动作

Bagaimana dengan query_sql? Apa yang perlu digunakan?

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan