4

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

我将 UNIX 时间戳存储在数据类型为 INT 的 db 列中。在我准备好的语句中,我将其设置为bind_param('s',$timestamp);并存储该值而没有任何问题。那么我使用s而不是使用i期间产生了什么影响bind_param

4

1 回答 1

5

它会影响 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 的强制转换规则。

于 2014-05-20T17:51:04.450 回答