【问题标题】:Delete function in php using ajax使用ajax删除php中的函数
【发布时间】:2017-03-17 20:26:57
【问题描述】:

我正在尝试使用 ajax/jquery 制作动态表。

添加、更新等其他功能正在运行,但我的删除功能似乎不起作用。我正在研究这个问题,但没有结果。

下面是sn-p,它从数据库中获取数据并形成一个表。 每行都有更新/删除按钮,这些按钮可以引导到相应的功能。

if(mysqli_num_rows($result) > 0) 
    { 
        $number = 1; 
        while($row = mysqli_fetch_assoc($result)) 
        { 
            $data .= '<tr> 
                <td>'.$number.'</td> 
                <td>'.$row['Surname'].'</td> 
                <td>'.$row['Name'].'</td> 
                <td>'.$row['Address'].'</td> 
                <td>'.$row['Telephone'].'</td> 
                <td>'.$row['PurchaseDate'].'</td> 
                <td>'.$row['Model'].'</td> 
                <td>'.$row['SerialNumber'].'</td> 
                <td>'.$row['Notes'].'</td> 
                <td> 
                    <button onclick="GetUserDetails('.$row['id'].')" class="btn btn-warning">Update</button> 
                </td> 
                <td> 
                    <button onclick="DeleteUser('.$row['id'].')" class="btn btn-danger">Delete</button> 
                </td> 
            </tr>'; 
            $number++; 
        } 
    } 

这是我的删除函数,它从另一个 php 接收行的 id,它从数据库加载表。

删除函数脚本

function DeleteUser(id) {
    var conf = confirm("Are you sure, do you really want to delete User?");
    if (conf == true) {
        $.post("ajax/deleteUser.php", {
                id: id
            },
            function (data, status) {
                // reload Users by using readRecords();
                readRecords();
            }
        );
    }
}

删除函数 php

<?php   
// check request   
if(isset($_POST['id']) && isset($_POST['id']) != "")   
{   
    // include Database connection file   
    include("db_connection.php");   

    // get user id   
    $client_id = $_POST['id'];   

    // delete User   
    $query = "DELETE FROM Clients WHERE id = '$client_id'";   
    if (!$result = mysqli_query($query)) {   
        exit(mysqli_error($result)); 
    }   
}   
?>   

我什至尝试进入 mysql 而不是 mysqli,它以某种方式工作。我有点假设mysqli具有与mysql不同的功能?好吧,我听说 mysql 已被弃用,但似乎我在这里做错了什么......

我不擅长编程,我正在学习,因为它成了我的新爱好。任何提示将不胜感激。

【问题讨论】:

  • 尝试将if(isset($_POST['id']) &amp;&amp; isset($_POST['id']) != "")改为if(isset($_POST['id']))
  • @RazibAlMamun 之前试过,没用。无论如何,谢谢你的提示
  • 所以请求到达deletefunction.php 但mysql 查询失败?你是对的,不要使用mysql_* 函数。这目前对 SQL 注入开放。
  • db_connection.php 是否打开mysqli 或mysql_* 连接? mysqli_query 需要连接字符串作为其第一个参数。见php.net/manual/en/mysqli.query.php。 @RazibAlMamun 也是正确的。 isset 永远不会返回 '',你可能可以使用 if(!empty(trim($_POST['id']))) {。
  • 目前一切都在mysqli上

标签: php jquery mysql ajax


【解决方案1】:

mysqli_* 是 MySQL 的更面向对象和改进的版本。

您需要将连接 ID 传递给mysqli_query()

混合 mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ])

所以,更正的代码:

if (!$result = mysqli_query($conn, $query)) {
// Where $conn is the connection identifier.

Documentation

【讨论】:

    【解决方案2】:

    这个查询终于对我有用了。

        // delete User  
        $query = "DELETE FROM Clients WHERE id = '$client_id'";  
       if (!$result = mysqli_query($GLOBALS["___mysqli_ston"], $query)) { 
            exit(((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false))); 
        } 

    【讨论】:

      猜你喜欢
      • 2013-11-12
      • 2017-03-29
      • 2021-04-05
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 2015-05-27
      • 2018-02-05
      • 1970-01-01
      相关资源
      最近更新 更多