Mysql 在列中插入NULL?
我试图弄清楚如何将空值插入到新插入行的列中 我正在研究“post图标”,它将在线程列表中为线程显示一个小图标。图标使用表单中的单选按钮。默认情况下,它设置为“无图标”。我想知道如何使单选按钮的值为空?我尝试将值设置为NULL,但它只是将单词“NULL”插入到数据库中Mysql 在列中插入NULL?,mysql,Mysql,我试图弄清楚如何将空值插入到新插入行的列中 我正在研究“post图标”,它将在线程列表中为线程显示一个小图标。图标使用表单中的单选按钮。默认情况下,它设置为“无图标”。我想知道如何使单选按钮的值为空?我尝试将值设置为NULL,但它只是将单词“NULL”插入到数据库中 $thread_sql = " INSERT INTO forum_threads ( user_id, forum_i
$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变量直接获取用户输入!这是一种更稳健、更安全的解决此问题的方法。这是一种更稳健、更安全的解决此问题的方法。