从数据库中删除空行

时间:2014-07-30 14:09:13

标签: php mysql sql

尝试删除数据库显示中的空行时,我无法使DELETE语句生效。现在我发出看起来像这样的看跌期权:

  Column 1          Column2
 | Example 1| 
 | Example 2|
 | Example 3|
 | Example 4|
                   |Example 5|
                   |Example 6|
                   |Example 7|
                   |Example 8|

我希望输出为:

  Column 1          Column 2
| Example 1 |     | Example 5|
| Example 2 |     | Example 6|
| Example 3 |     | Example 7|

我从表单中获取用户输入并有3个不同的字段插入到1个数据库表中,但我不要求在插入之前填写所有3个字段。显然,如果用户决定仅填写1或2个输入字段,则会导致空行。

我已尝试使用DELETE FROM table WHERE input =NULL",但我遇到错误或者根本无法正常工作(取决于我将其放在代码中的位置)。

 mysql_connect("page.ipagemysql.com", "site", "site") or    die(mysql_error()); 
 mysql_select_db("site") or die(mysql_error()); 
 $data = mysql_query("SELECT * FROM table ORDER BY storyn DESC ") 
 or die(mysql_error()); 
 $data = mysql_query(" DELETE FROM table WHERE input2=NULL") 
 or die(mysql_error()); 

以上示例不做任何更改,以下示例为我提供了错误消息

 mysql_connect("page.ipagemysql.com", "site", "site") or    die(mysql_error()); 
 mysql_select_db("site") or die(mysql_error()); 
 $data = mysql_query("SELECT * FROM table DELETE FROM table WHERE input2=NULL ORDER BY storyn DESC ") 
 or die(mysql_error()); 

我是否将DELETE声明置于错误的位置?我在哪里错了?

3 个答案:

答案 0 :(得分:2)

这将取决于空值如何存储到您的数据库。如果它被存储为空字符串,通常需要使用

delete from table where input2=''

虽然更好的做法是检查是null还是空,如int Jens'答案。

但是,两者都不会在您的示例中产生您想要的查询结果。当您运行删除时,它会删除整行,所以

delete from table where column2 is null or column2=''

会使您的表格看起来像

 Column 1          Column2
                   |Example 5|
                   |Example 6|
                   |Example 7|
                   |Example 8|

  Column 1          Column 2
| Example 1 |     | Example 5|
| Example 2 |     | Example 6|
| Example 3 |     | Example 7|

这样的东西可能需要数据库设计,例如将column1和column2提取到他们自己的表中并确定两者之间的某种关系,或者更复杂的查询,你需要确定两者之间的关系列并执行更新和删除的某种组合。

答案 1 :(得分:1)

尝试使用

$data = mysql_query(" DELETE FROM table WHERE input2 IS NULL OR input2=''") 

$data = mysql_query(" DELETE FROM table WHERE input2=NULL") 

答案 2 :(得分:1)

在MySQL中你不能使用" ="测试值是否为null。您需要在您的情况下使用IS NULL。请注意,它不区分大小写。所以你的查询将是:

$data = mysql_query("DELETE FROM table WHERE input2 IS NULL")

还要考虑NULL与空值不同。因此,您可以按以下方式优化查询:

$data = mysql_query(" DELETE FROM table WHERE input2 IS NULL OR input2 = ''")