bind_param()i或s的Mysqli值是多少

时间:2013-11-05 18:36:46

标签: php mysqli sqlbindparameter

我在将数据库插入数据库时​​使用Mysqli bind_param。

当我尝试插入一个名为“0737327373”的电话时,该值被插入为“737327373”而没有前导“0”。但是当我将bind_param(“i”)更改为bind_param(“s”)时,值正确地插入为“0737327373”。当我插入带有前导0的数字时,我应该使用“s”而不是“i”吗?

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

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

对不起,如果看起来有点乱,我会尽力解释它,如果需要的话。

英语不是我的第一次憔悴,我还没有真正理解bind_param s / i函数,我认为“0”会算作int而不是字符串。

提前致谢。

2 个答案:

答案 0 :(得分:3)

如果要在varchar字段中插入“数字”,则使用“s”。

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

答案 1 :(得分:0)

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

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

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

相关问题