尝试删除数据库显示中的空行时,我无法使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
声明置于错误的位置?我在哪里错了?
答案 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 = ''")