我已经看到了很多关于NULL
日期时间字段问题的好答案,答案是不使用'',只是直接放NULL
。
这一切都很棒,但我所有的MySQL查询都是通过执行str_replace来构建的,如下所示:
$query = "SELECT * FROM @@t1 WHERE @@f1=@@v1"
然后我使用table,field和value数组以及将在
中替换的实际内容对于其他任何事情,它的工作效率都很高
为此,我无法找到一种方法来获取NULL
,而没有引号
有什么明显我错过了吗?
答案 0 :(得分:1)
你不应该使用str_replace来构造sql,因为它实际上并不是100%的工作。
改为使用预备语句 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
str_replace失败的示例
如果您的表名,字段名称或数据包含其中一个“@@”令牌,该怎么办?然后你遇到麻烦,因为它可能会被参数替换,具体取决于你做替换的顺序。
使用预准备语句,数据库会为您处理所有这些。您还可以正确地完成自动转义,查询预编译以获得更好的性能以及您和我可能甚至没有考虑过的其他安全保护。