MySQL数据没有更新

时间:2014-03-23 01:50:58

标签: php mysqli

所以,我正在研究论坛脚本,并试图让线程的创建者和工作人员可以锁定线程,但“锁定”不会更新。

以下是用于触发锁定的内容(发布时):

[input type="checkbox" name="lock" value="1" onclick="return confirm('Are you sure? Only staff members can undo this.')" /]关闭此主题(禁用发布)

由于html的允许而不得不将()改为[]

这是PHP:

$id = mysqli_real_escape_string(db(), $_GET['id']); // This was in the code before. Think I'm stupid?
$eee = "SELECT * FROM forums WHERE id = $id";
    $eeee = query($eee);
    while ($notif = mysqli_fetch_assoc($eeee)) {
        if ($_POST['lock'] = '1') {
            if ($_SESSION['username'] == $notif['creator'] || staffmember()) {
                $hi = "UPDATE forum SET ´lock´ = '1' WHERE ´id´ = '$id'";
                $ooo = query($hi);
            }
        }
    }

4 个答案:

答案 0 :(得分:1)

我的错误在这里:

$hi = "UPDATE forums SET [lock]=1 WHERE id='$id'";

我需要添加``around lock来使其工作,因为lock是一个保留字。

答案 1 :(得分:0)

未提取身份证件:

$hi = "UPDATE forum SET ´lock´ = '1' WHERE ´id´ = '". $notif['id'] ."'";

请使用更好的变量名来理解。

答案 2 :(得分:0)

我假设query是一个自定义函数,它也处理与db的连接?

这一行可能就是你的问题if ($_POST['lock'] = '1') {

那应该是if ($_POST['lock'] == '1') {

=是一个赋值运算符==是一个比较器

请理解你的sql注入漏洞,你的用户信任你的凭据。他们不应该因为您的安全漏洞而遭受痛苦

答案 3 :(得分:0)

尝试print_r($notif),因为除了已经提到的错误,我看不到任何其他错误。