在sql查询中使用变量时,如何正确地使用空值更新mysql字段?
我有一个名为$timestamp的变量。当它被设置为date( Y-m-d h:i:s )时,我必须用引号将它括起来,因为我在mysql查询中传递了一个字符串。当$timestamp设置为NULL时,数据库查询将包含''作为$timestamp的值,并且该字段将更新为0000-00-00 00:00:00。将此字段保留为空很重要,以表明该进程以前从未运行过。
我不想使用now(),因为这样会导致我的sql语句与我的类变量$timestamp不同步。
我不想将$timestamp设置为'NULL‘,因为那样该变量就不准确了。它不再是NULL,它被设置为包含单词NULL的字符串。
这里我漏掉了什么?
发布于 2011-11-18 07:02:19
经过大量研究,我发现这是一个众所周知的问题,如果您直接编写sql查询,则没有好的解决方案。
正确的解决方案是使用数据库抽象层,如PDO (适用于PHP )或活动记录(用于Codeignitor和Ruby on Rails等框架)。
发布于 2011-11-04 09:29:47
将列设置为NULL的正确SQL语法为:
UPDATE Table SET Column = NULL WHERE . . .(请注意,文字NULL前后没有引号)。
您是使用SQL还是使用某种框架来执行此更新?如果是一个框架,它应该识别空值,并将它们正确地传递给数据库。
https://stackoverflow.com/questions/8003939
复制相似问题