从php更新MySQL布尔值(tinyint)

从php更新MySQL布尔值(tinyint),php,mysql,Php,Mysql,我写的剧本有点问题 $sql ="UPDATE users SET adagio = 1 WHERE username = '$_SESSION[username]'"; 这里的主要问题是,虽然我已经测试过了 这部分代码将运行 我已成功连接到正确的服务器 3) $\u会话[用户名]为我提供了正确的用户名, 当我运行代码时,数据库没有更新。adagio是一个布尔型(嗯,实际上是一个tinybit),我已经在这里上传了数据库的phpMyAdmin屏幕: () 我不完全确定它为什么不起作用,尽管我

我写的剧本有点问题

$sql ="UPDATE users SET adagio = 1 WHERE username = '$_SESSION[username]'"; 
这里的主要问题是,虽然我已经测试过了

  • 这部分代码将运行

  • 我已成功连接到正确的服务器

  • 3)
    $\u会话[用户名]
    为我提供了正确的用户名, 当我运行代码时,数据库没有更新。adagio是一个布尔型(嗯,实际上是一个tinybit),我已经在这里上传了数据库的phpMyAdmin屏幕:

    ()

    我不完全确定它为什么不起作用,尽管我在网上搜索并找到了类似的线程,但在任何对我起作用的线程中都没有一个补丁。我想知道你们中是否有人能看出我做错了什么

    编辑额外内容:

    if(($_POST['adagio']) == 1){
    $sql ="UPDATE users SET adagio = 1 WHERE username = '$_SESSION[username]'";
    }
    

    $\u SESSION[username]
    几乎肯定是一个字符串,因此必须用引号括起来:

    $sql ="UPDATE users SET adagio = 1 WHERE username = '$_SESSION[username]'"; 
    
    仅供参考,如果您检查SQL错误,MySQL将很乐意告诉您。您应该在使用的任何MySQL库中使用适当的错误报告函数。

    您能试试这个吗

    if (1 == $_POST['adagio']) {
        $sql = sprintf ( "UPDATE users SET adagio = 1 WHERE username = '%s'", mysql_escape_string($_SESSION['username']) );
    }
    

    为什么这个答案被否决了?@castis这是相关的手动输入-。请参阅koolaid1第1部分,因为
    “如果您检查SQL错误,MySQL将很高兴告诉您”
    @johncode谢谢您的建议,我编辑了原始帖子。我以前试过这个,因为它不起作用,我把它改回来了——但它是一个字符串,所以我想最好保持这样。我用引号再试了一次,但仍然不会影响数据库。我开始认为这是MySQL的问题,但我只是想确保我的代码是正确的。(我没有投反对票,我没有足够的代表)回显你的问题并将其发布在这里。这将显示是否是SQL错误;mysql、mysqli还是PDO?你能展示一些关于如何执行查询的代码吗?@Phil我正在使用mysql 5.1。我用更多的代码更新了原来的帖子。(很短,现在就这些,除了我的代码连接到数据库和session_start)基本上,我从一个复选框(0或1)中得到一个结果,然后,如果是一个复选框,在数据库中启用慢板。请仔细阅读我的问题。如何执行查询?将有一行代码在
    $sql
    中执行查询。向lineCare演示这是如何解决问题的?尽管您似乎担心SQL语法,但我认为,
    $\u POST['adagio']
    没有得到正确的值。SQL语法似乎很适合我。您可以从SQL命令行或类似phpmyadmin的东西手动尝试。您正在检查$_POST['adagio']是否有值,然后更新表中的行。我认为如果$u POST['adagio']是1,那么应该更新表中的行。