指定mysqli bind_param类型i,d,s,b
的优缺点是什么?
我将UNIX时间戳存储在数据类型为INT的db列中。在我准备好的声明中,我将其设置为bind_param('s',$timestamp);
,它存储值没有任何问题。那么在s
期间我使用i
代替bind_param
会产生什么影响?
答案 0 :(得分:3)
它会影响MySQL查看查询/值的方式。接受这个问题:
INSERT INTO foo VALUES (?)
如果将参数绑定为int:
$stmt->bind_param('i', $bar);
然后查询将等同于:
INSERT INTO foo VALUES (42)
但是,如果你绑定为字符串:
$stmt->bind_param('s', $bar);
查询大致相当于:
INSERT INTO foo VALUES ('42')
在许多情况下,MySQL并不特别在意你是否发送一个字符串或一个int,并且只是动态地将值转换为适当的类型,就像PHP在大多数情况下一样。但是,在某些情况下以及某些类型的情况下,您可能会遇到意外的转换,这就是为什么您应该将值绑定为您想要的类型而不是将其留给MySQL的转换规则。