指定mysqli bind_param类型

时间:2014-05-20 17:32:58

标签: php mysqli

指定mysqli bind_param类型i,d,s,b的优缺点是什么?

我将UNIX时间戳存储在数据类型为INT的db列中。在我准备好的声明中,我将其设置为bind_param('s',$timestamp);,它存储值没有任何问题。那么在s期间我使用i代替bind_param会产生什么影响?

1 个答案:

答案 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的转换规则。