Php MySQL和空datetime字段[再次]。。。用str_replace填充查询

Php MySQL和空datetime字段[再次]。。。用str_replace填充查询,php,mysql,Php,Mysql,对于NULLdatetime字段的问题,我已经看到了很多很好的答案,答案是不要使用“”,直接放置NULL 这很好,但是我所有的MySQL查询都是通过str_替换构建的,如下所示: $query = "SELECT * FROM @@t1 WHERE @@f1=@@v1" 然后,我使用表、字段和值数组以及将在中替换的实际内容 对于其他每一件事,它都是100%的好 对于这一点,我找不到一种方法来获得NULL,如果没有引号的话 有什么明显的遗漏吗?您不应该使用str_replace来构造sql,因为

对于
NULL
datetime字段的问题,我已经看到了很多很好的答案,答案是不要使用“”,直接放置
NULL

这很好,但是我所有的MySQL查询都是通过str_替换构建的,如下所示:

$query = "SELECT * FROM @@t1 WHERE @@f1=@@v1"
然后,我使用表、字段和值数组以及将在中替换的实际内容

对于其他每一件事,它都是100%的好 对于这一点,我找不到一种方法来获得
NULL
,如果没有引号的话
有什么明显的遗漏吗?

您不应该使用str_replace来构造sql,因为实际上它并没有100%的时间工作

使用准备好的语句

str_replace失败的示例

如果表名、字段名或数据包含其中一个“@@”标记,该怎么办?那么您就有麻烦了,因为它可能会被参数替换,这取决于替换的顺序


通过准备好的语句,数据库将为您处理所有这些。您还可以正确地完成自动转义,查询预编译以获得更好的性能和其他您和我可能从未想过的安全保护。

您似乎正在重新创建绑定参数\Prepared语句-这不是一个好主意