在 PHP 中将十进制/双精度/浮点值与 PDO 绑定的最佳方法是啥?
Posted
技术标签:
【中文标题】在 PHP 中将十进制/双精度/浮点值与 PDO 绑定的最佳方法是啥?【英文标题】:What is the best way to bind decimal / double / float values with PDO in PHP?在 PHP 中将十进制/双精度/浮点值与 PDO 绑定的最佳方法是什么? 【发布时间】:2010-11-23 00:48:41 【问题描述】:似乎类常量仅涵盖PDO::PARAM_BOOL
、PDO::PARAM_INT
和PDO::PARAM_STR
用于绑定。你只是将十进制/浮点/双精度值绑定为字符串还是有更好的方法来处理它们?
mysqli 允许 'd' 类型用于双精度,令人惊讶的是,当 PDO 在许多其他方面看起来更好时却没有等效的类型。
【问题讨论】:
【参考方案1】:如果您真的想使用 PDO,您必须将其输入为 PARAM_INT
,但我从不使用 double
的规范。
可选参数,指定PDO
类型。
我猜你最好不要为double
s 设置PDO
类型。
【讨论】:
我不认为我想通过将其绑定为 INT 来失去精度,但您提出了一个很好的观点,即不指定类型,谢谢。 实际上,如果没有给出 param_TYPE,则假定为 PARAM_STR。 您没有也不应该将其绑定为整数,否则您将丢失数据!请阅读@AlixAxel 答案。【参考方案2】:AFAIK PDO::PARAM_STR 是要走的路。
【讨论】:
谢谢!我可能只是要这样做并验证自己。 不知道的,语法是:$sth->bindParam(':keyword', $keyword, PDO::PARAM_STR);
【参考方案3】:
您必须使用 PDO::PARAM_STR,但对于 SQLite 和其他引擎,这可能会产生不可预知的行为。请参阅此问题的一个示例:SQLite HAVING comparison error
【讨论】:
以上是关于在 PHP 中将十进制/双精度/浮点值与 PDO 绑定的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章