0

考虑以下代码片段:

$day = '3'; // form input 

...

$stmt = $conn->stmt_init();
$q = 'INSERT INTO recording (release_day) VALUES(?)';
$stmt->prepare($q);
$stmt->bind_param('i', $day);
$stmt->execute();
...

变量$day是来自表单输入的字符串,但我将其绑定到整数。数据库列是 smallint 数据类型。

我假设数据库正在获取整数,对吗?我需要在绑定之前进行某种类型转换吗?什么是好的做法?

4

2 回答 2

1
$i = 1; // PHP Casts to integer because the lack of quote marks for example.
$i = "1"; // PHP Casts to string because of the quote marks 
$i = 1.39; // PHP Casts to float because of the decimal place

这些是创建变量时的自动数据转换,因此不需要对变量进行二次转换,只需查看 MySQL 手册以查看 smallint 的限制/最大字节大小。确保您制定服务器标准并且不会有问题http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

于 2013-08-27T02:07:33.390 回答
1

我需要在绑定之前进行某种类型转换吗?

您已经在这里进行了类型转换:

$stmt->bind_param('i', $day);

由于第一个参数值,这会强制$day转换为整数,'i'然后将该值传递给数据库。

例如,如果您的变量是'123hello', only123将被传递。

于 2013-08-27T02:11:37.137 回答