2010-07-03 56 views
1

有没有一种方法来设置一个IF语句在MySQL和PHP写的东西到列或不?我想要做的是完全跳过一列,以便写入“NULL”,以防列中没有要提交的数据。设置IF语句写的东西与否,一个列在MySQL

如果没有在一列被提交到数据库中,我希望它是NULL该记录明显。现在,在没有数据的每一列中,它只是空的。

我可以ofcourse设置一个完全新的变量,新的查询和所有的,只是跳过查询该列,但对我来说,这将会是吨以上(可能)不必要的代码。

+0

你的情况的更多的解释,你给,你甚至可能有人可能只是给你所需要的代码。 – 2010-07-03 22:49:12

回答

1

您可以在SQL中使用CASE语句执行条件逻辑,例如

UPDATE table SET column=CASE WHEN @param='' THEN NULL ELSE @param END WHERE ... 
+0

我不确定那是做我想做的。看,我想检查一个PHP变量是否为真,如果是,我想写入列。 – Nisto 2010-07-03 22:52:52

+0

请参阅更新答案中的示例。 – cdonner 2010-07-04 00:29:58

0

好吧,你想要的信息,所以在这里我们去...

现在看起来是这样的:

$query = "INSERT INTO requests (Ex1, Ex2, Ex3, Ex4, Ex5, Ex6) VALUES ('".$Ex1."', '".$Ex2."', '".$Ex3."', '".$Ex4."', '".$Ex5."', '".$Ex6."')"; 

我要插入的情况下,东西“实例3”有数据要插入,否则,我基本上不想在查询中包含要提交给该列的列或数据。

0

插入空不加引号插入变量。

INSERT INTO table (col1, col2) VALUES ($val1, $val2); 

PHP的快速位可加引号:

foreach($_POST as $key=>$value) { 
    if($vaule == '') $_POST[$key] = 'NULL'; 
    else $_POST[$key] = "'".$value."'"; 
} 

但你应该检查并在其上验证数据的路无论如何,所以通常以上PHP是太简单了。但是,请将引号关闭,只将其添加到实际值中。您可以设置一个函数进行验证,在使用之前清理并向所有数据添加引号。

+0

这是否工作?我的意思是,我不需要在VALUES部分用'或者'包围它们,以便能够从PHP代码中获取值...? – Nisto 2010-07-03 23:36:30

+0

不,您不需要,只有当变量正在使用的是实际的数据,如果它是NULL,则它是有效的SQL,因此将'或'关闭意味着它将作为实际的NULL插入。如果你喜欢... <?php $ insert =“插入表(col1,col2)VALUES(”。$ val1。“,”。$ val2。“)”; ?> – Ashley 2010-07-04 18:50:16