在 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_BOOLPDO::PARAM_INTPDO::PARAM_STR 用于绑定。你只是将十进制/浮点/双精度值绑定为字符串还是有更好的方法来处理它们?

mysqli 允许 'd' 类型用于双精度,令人惊讶的是,当 PDO 在许多其他方面看起来更好时却没有等效的类型。

【问题讨论】:

【参考方案1】:

如果您真的想使用 PDO,您必须将其输入为 PARAM_INT,但我从不使用 double 的规范。

可选参数,指定PDO类型。

我猜你最好不要为doubles 设置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 绑定的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PySpark 1.6 中将 DataFrame 列从字符串转换为浮点/双精度?

单精度和双精度浮点值有啥不同? [复制]

PHP PDO Select 查询返回双精度值

是否可以保真地将浮点双精度数往返于两个十进制整数?

是否可以保真地将浮点双精度数往返于两个十进制整数?

.NET 中十进制、浮点和双精度的区别?