繁体   English   中英

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

[英]Updating MySQL Database with checkboxes and PHP

我正在尝试使用复选框和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']因为这些是您在data:...提供的名称data:...

$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);

但是,您的脚本有遭受SQL注入攻击的危险,看看Little Bobby Tables发生了什么,即使您转义了输入,也不安全! 使用准备好的语句和参数化的语句

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM