2

bind_param()当我将东西插入我的数据库时,我正在使用 mysqli 。

当我尝试将电话号码插入为“0737327373”时,该值被插入为“737327373”而没有前导“0”。但是当我改为改为bind_param("i", $phoneNumber)bind_param("s", $phoneNumber)0737327373”时,值被正确插入。那么当我插入带有前导 0 的数字时,我应该使用“s”而不是“i”吗?

此外,我的值可能介于 (0-5) 和 (0-1) 之间,具体取决于用户在注册期间检查的选择/复选框。

这些值是否也应该作为 bind_param("s") 插入,因为它们也可能是“0”。

4

2 回答 2

4

如果您要在 varchar 字段中插入“数字”,那么可以,使用“s”。

在您的情况下,将电话号码作为整数插入没有实际意义,因为您可能不会对其进行任何数学分析并且您会失去功能(例如前导零)。

于 2013-11-05T18:39:32.523 回答
0

您应该使用bind_param("s", $phoneNumber)99% 的时间。其他类型仅用于查询工作需要正确类型的特殊情况。

重要提示:绑定类型应该由 SQL 中的列/操作数类型决定,而不是由您拥有的数据决定。您的值是数字还是字符串并不重要,重要的是它在 SQL 中使用的上下文中。

在您的情况下,您声称您的电话号码以零开头,但整数不能以零开头,除非它本身是零。这在数学上是错误的。电话号码不是整数!它们是字符串。您应该将电话号码存储VARCHAR在数据库的列中。

于 2020-04-04T11:03:56.013 回答