2010-11-04 50 views
0

我想弄清楚如何将一个NULL值插入到新插入的行的列中。在列中插入NULL?

我正在“发布图标”,这将显示线程列表上的线程的小图标。图标在表单中使用RADIO按钮。默认情况下,它被设置为无图标。我想知道如何处理该单选按钮的值以使其为空?我尝试将设置值设置为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); 
+4

你不说你正在使用什么语言或框架。在直接的SQL中,您可以执行INSERT INTO my_table VALUES('a',NULL) – 2010-11-04 17:07:49

+0

这是更多的PHP问题,而不是mysql问题 – 2010-11-04 17:37:28

回答

1

就做这样的事情(PDO):

$stmt = $db->prepare('INSERT INTO foo(bar) values (?);'); 
$stmt->execute(array($value=='NULL'? NULL,$value)); 

或者与mysql

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

这是解决此问题的更健壮和更安全的方法。 – 2010-11-04 17:36:05

4

随着MySQL的:

insert into your_table (nulled_column) values (null); 

如果你得到一个'NULL'文字而不是一个null值,这可能是因为你没有从客户端发出正确的指令(PHP,C#,Java程序)。您需要分享您用于插入的代码才能获得更多帮助。

UPDATE:

根据您最近编辑的问题,一下就当你插入NULL值摆脱''的。如果您使用'',那么您将获得'NULL'文字插入,如您所述。

我也建议你在MySQL中使用PreparedStatements以避免SQL注入攻击。

-1

这工作。不得不使用中号

 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); 
+3

这使您可以广泛开放SQL注入,并且我将很乐意为您的数据库提供支持。使用预准备的语句消除你的用户输入。这是错误的。永远不要,永远,永远直接从$ _SESSION和$ _POST变量的用户输入! – 2010-11-04 17:33:58