Mysql 在列中插入NULL?

Mysql 在列中插入NULL?,mysql,Mysql,我试图弄清楚如何将空值插入到新插入行的列中 我正在研究“post图标”,它将在线程列表中为线程显示一个小图标。图标使用表单中的单选按钮。默认情况下,它设置为“无图标”。我想知道如何使单选按钮的值为空?我尝试将值设置为NULL,但它只是将单词“NULL”插入到数据库中 $thread_sql = " INSERT INTO forum_threads ( user_id, forum_i

我试图弄清楚如何将空值插入到新插入行的列中

我正在研究“post图标”,它将在线程列表中为线程显示一个小图标。图标使用表单中的单选按钮。默认情况下,它设置为“无图标”。我想知道如何使单选按钮的值为空?我尝试将值设置为NULL,但它只是将单词“NULL”插入到数据库中

            $thread_sql = "
            INSERT INTO forum_threads (
                user_id,
                forum_id,
                thread_postdate,
                thread_lastpost,
                thread_title,
                thread_description,
                thread_icon
            ) VALUES (
                '$_SESSION[user_id]',
                '$_GET[f]',
                '$date',
                '$date',
                '$_POST[topictitle]',
                '$_POST[topicdescription]',
                '$_POST[posticon]'
            )
        ";
        $thread_query = @mysqli_query ($db_connect, $thread_sql);
使用MySQL:

insert into your_table (nulled_column) values (null);
如果您得到的是
'NULL'
文本而不是
NULL
值,可能是因为您没有从客户端发出正确的命令(PHP、C#、Java程序)。您需要共享用于插入的代码,以便获得更多帮助

更新:

根据您最近编辑的问题,当您插入空值时,只需去掉
'
。如果您使用
'
,那么您将得到您提到的插入的
'NULL'
文本

我还建议您在MySQL中使用
PreparedStatements
,以避免SQL注入攻击。

使用MySQL:

insert into your_table (nulled_column) values (null);
如果您得到的是
'NULL'
文本而不是
NULL
值,可能是因为您没有从客户端发出正确的命令(PHP、C#、Java程序)。您需要共享用于插入的代码,以便获得更多帮助

更新:

根据您最近编辑的问题,当您插入空值时,只需去掉
'
。如果您使用
'
,那么您将得到您提到的插入的
'NULL'
文本


我还建议您在MySQL中使用
PreparedStatements
,以避免SQL注入攻击。

只需执行以下操作(PDO):

或者使用mysql:

mysql_query('INSERT INTO foo(bar) 
   values ('.($value=='NULL'? 'NULL',"'".mysql_real_escape_string($value)."'").')';

就这样做(PDO):

或者使用mysql:

mysql_query('INSERT INTO foo(bar) 
   values ('.($value=='NULL'? 'NULL',"'".mysql_real_escape_string($value)."'").')';

这很有效。必须使用IF

        if (isset($_POST['submit'])) {
        $thread_sql = "
            INSERT INTO forum_threads (
                user_id,
                forum_id,
                thread_postdate,
                thread_lastpost,
                thread_title,
                thread_description,
                thread_icon
            ) VALUES (
                '$_SESSION[user_id]',
                '$_GET[f]',
                '$date',
                '$date',
                '$_POST[topictitle]',
                '$_POST[topicdescription]',
                IF('$_POST[posticon]'='NULL',NULL,'$_POST[posticon]')
            )
        ";
        $thread_query = @mysqli_query ($db_connect, $thread_sql);

这很有效。必须使用IF

        if (isset($_POST['submit'])) {
        $thread_sql = "
            INSERT INTO forum_threads (
                user_id,
                forum_id,
                thread_postdate,
                thread_lastpost,
                thread_title,
                thread_description,
                thread_icon
            ) VALUES (
                '$_SESSION[user_id]',
                '$_GET[f]',
                '$date',
                '$date',
                '$_POST[topictitle]',
                '$_POST[topicdescription]',
                IF('$_POST[posticon]'='NULL',NULL,'$_POST[posticon]')
            )
        ";
        $thread_query = @mysqli_query ($db_connect, $thread_sql);

你不会说你在用什么语言或框架。在直截了当的SQL中,您确实会在my_表中插入值('a',NULL),这更多的是PHP问题,而不是mysql问题—您不说您使用的是什么语言或框架。在straight SQL中,您确实会在my_表中插入值('a',NULL),这更像是一个PHP问题,而不是mysql问题。这会让您更容易接受SQL注入,我很乐意为您的数据库添加X0R。使用事先准备好的陈述。清理用户输入。这是错误的。永远不要从$\u会话和$\u POST变量直接获取用户输入!这使您对SQL注入敞开了大门,我将很高兴为您的db添加X0R。使用事先准备好的陈述。清理用户输入。这是错误的。永远不要从$\u会话和$\u POST变量直接获取用户输入!这是一种更稳健、更安全的解决此问题的方法。这是一种更稳健、更安全的解决此问题的方法。