我对 PHP 5.3.2 的 bind_param 函数有疑问。
假设我有一个数据库表名“tbl_user”和数据如下:
-------------------------------------- user_id [整数] | 用户名 [varchar(15)] -------------------------------------- 350 | 约翰·斯密奇 351 | 凯莉安 --------------------------------------
第一次编码:
$stmt = $mysqli->prepare("SELECT * FROM tbl_user WHERE user_id = ? ");
$stmt->bind_param('s', $v_user_id);
$v_user_id = '350a';
$stmt->execute();
系统将返回 1 个结果,其中 user_id 为 350,名称为“John Smitch”。
二次编码:
$stmt = $mysqli->prepare("SELECT * FROM tbl_user WHERE user_id = ? ");
$stmt->bind_param('s', $v_user_id);
$v_user_id = 'a350';
$stmt->execute();
系统将返回空结果给我。
到目前为止,我知道 PHP 5.3 会自动将值转换为字符串,一旦 MySql 从 php 接收数据,它将再次自动转换为它自己的数据类型,该数据类型在表结构中定义。
那么我该如何处理这种情况,以便系统在我传递值'350a'时向我返回空结果?