javascript - 使用复选框和 PHP 更新 MySQL 数据库

标签 javascript php jquery mysql checkbox

我正在尝试使用复选框和 PHP 更新 MySQL 数据库。我在网上阅读了很多代码示例,并在这里阅读了很多问题,但我似乎陷入了最后的障碍。

我的代码首先查询 MySQL 以带回用户列表,然后每个列表旁边有一个复选框(在 MySQL 中为 0 或 1),指示用户是否已完成。

我想要做的是,当选中该复选框时,更新 MySQL 数据库并将列更新为 1,或者如果未选中,则将列更改为 2。

这是迄今为止我的代码:

HTML 片段(复选框):

        while($row = mysqli_fetch_array($result))
    {
        echo "<tr>";
            echo "<td>" . $row['Firstname'] . "</td>";
            echo "<td>" . $row['Surname'] . "</td>";
            echo "<td>" . $row['Department'] . "</td>";
            echo "<td>" . $row['RequestedBy'] . "</td>";
            echo "<td>" . $row['StartDate'] . "</td>";
            echo "<td class='tbl-chk'> <input type='checkbox' name='WSCompleted' value='"; echo $row['ID'] . "'" ; if ($row['WSCompleted']=='1') { echo "checked='checked'";} echo "/></td>";

这是我的 jQuery,成功检索值和 ID,然后发布它们:

        $(document).ready(function(){
        $('input[name=WSCompleted]').click(function(){
            var wsCompleted = $(this).is(':checked') ? 1 : 0;
            var wsCompletedID = $(this).attr('value');

            $.ajax({
            type: "POST",
            url: "/usr-handler.php",
            data: {id: wsCompletedID, wsCompleted: wsCompleted},
            success: function(){
                $('div.success').fadeIn();
            }
        });
        return true;

        }); 
    });

最后这是我的 PHP 代码片段:

$wsCompleted = $_POST['wsCompleted'];   
$id = $_POST['wsCompletedID'];

$query = "UPDATE newusers SET WSCompleted = '$wsCompleted' WHERE id = '$id'";

mysqli_query($con, $query) or die(mysqli_error());


mysqli_close($con);

我将复选框的值设置为 MySQL 中实际的行 ID,然后我可以使用复选框值在 MySQL 中选择正确的行,并更新它。

我遇到的问题是,目前代码如何,我从 FireBug 得到以下响应:

未识别的索引:WSCompletedID

网上查了一下建议修改:

$id = $_POST['wsCompletedID'];

致:

$id = (ISSET($_POST['wsCompletedID']));

但是这样做会清除错误消息,但实际上并不会更新 MySQL 上的值。

如果我手动将 $id 设置为某个内容,更新就会起作用,但显然这是不对的,因为它只会更新我选择的 ID。

我完全不知道是什么导致了这个问题。我尝试过在网上查找,但一无所获。

非常感谢任何帮助。

谢谢

最佳答案

您正在 JavaScript AJAX 代码中加载数据

data: {id: wsCompletedID, wsCompleted: wsCompleted},

这将创建以下$_POST数组

id => whatever was in wsCompletedID
wsCompleted => whatever was in wsCompleted

因此,您的 PHP 代码应该查找 $_POST['id']$_POST['wsCompleted'],因为这些是您在数据:...

$wsCompleted = $_POST['wsCompleted'];   
$id = $_POST['id'];

$query = "UPDATE newusers SET WSCompleted = '$wsCompleted' WHERE id = '$id'";

mysqli_query($con, $query) or die(mysqli_error());
mysqli_close($con);

HOWEVER: Your script is at risk of SQL Injection Attack Have a look at what happened to Little Bobby Tables Even if you are escaping inputs, its not safe! Use prepared statement and parameterized statements

关于javascript - 使用复选框和 PHP 更新 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38825974/

相关文章:

javascript - 如何在 Angular 2 中按需延迟加载组件和模块

javascript - 在 HTML5 canvas 上绘图的最佳实践、技巧和陷阱是什么

javascript - 如何在视频标签上实现叠加

javascript - jQuery $() 构造函数和带有前导反斜杠的字符串

javascript - jQuery:延迟显示下拉菜单内容

php - Facebook Jquery ajax 权限请求?

php - WordPress 在前端显示旧数据

php - 读取从 cron 作业创建的文件

php - "different"ajax 调用引用的表单提交按钮

javascript - 仅为特定值计算值