MySQL 和 NULL 日期时间字段 [再次] ..使用str_replace填充查询


MySQL and NULL datetime fields [again] ... populating query with str_replace

对于NULL日期时间字段的问题,我看到了很多很好的答案,答案是不要使用'',直接放NULL

这一切都很棒,但是我所有的MySQL查询都是通过执行str_replace来构建的,如下所示:

$query = "SELECT * FROM @@t1 WHERE @@f1=@@v1"

然后,我将表、字段和值数组与将要替换的实际内容一起使用

对于其他所有事情,它都工作 100% 很棒为此,我找不到一种在没有引号的情况下获得NULL的方法我错过了什么明显的东西吗?

你不应该使用 str_replace 来构造 sql,因为实际上它不能 100% 工作。

改用预准备语句http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

str_replace失败的示例

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

使用预准备语句,数据库将为您处理所有这些操作。 您还可以正确完成自动转义,查询预编译以获得更好的性能以及其他您和我可能甚至没有想到的安全保护。