【发布时间】:2021-04-08 05:13:50
【问题描述】:
关于prepared statement的bind_param()函数,php documentations中提到:
如果您指定类型“i”(整数),它允许您拥有的最大值是 2^32-1 或 2147483647。因此,如果您在您的数据库,那么你最好使用 "s" (字符串)。
这里是说我们应该将s 用于big int 列。但我尝试i 在一个大的 int 列中插入一个 long 并且效果很好。所以这让我很困惑!对于大整数,我们实际上应该使用s 还是i?!
【问题讨论】:
-
这不是“文档”。您必须区分文档形式 user cmets。任何人都可以在那里发布任何内容,而这样的评论可能会过时、混淆或完全错误。
-
应该使用
s而不是i的示例是PHP binding 'bigint' datatype (MySQLi prepared statement)。原因很简单,使用大于 2^32-1 的整数(在 32 位版本上)。但是没有人会阻止你使用s来处理小于 2^32-1 的值。 -
@Luuk 这让我很困惑!我测试了用
i插入一个bigint,它起作用了。为什么? -
因为你用于 bigint 的值小于PHP_INT_MAX。但是 PHP_INT_MAX 的值取决于 32 位或 64 位系统。这就是为什么有人建议使用
s,因为这将'always'工作 -
我一直不明白键入绑定参数的目的。取值范围已经由包含实际值的 PHP 变量确定。
标签: php mysql mysqli prepared-statement bindparam