为什么 mysqli 绑定函数不能正确处理我的字符串?
Why does the mysqli bind function not handle my string correctly?
我花了将近一个月的时间才搞清楚如何让会话处理函数在 PHP 中工作。我只有一个问题,bind_param
函数使用 i
而不是 s
来获取记录。
$stmt = $mysqli->prepare("SELECT data FROM session WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
这个 $id
是一个包含数字和字母的会话 ID,例如:e5eeire57wjeuewq8w
即使我没有这个会话的记录,这个查询 returns 大约 8 条记录在 num_rows
。所以我通过在绑定参数中放置 s
而不是 i
来解决这个问题。
我的问题是,为什么绑定参数将我的字符串视为整数?为什么它 return 8 行,即使我有 0 行具有此 ID?
bind_param page 上有一条评论证实了 Jon 在评论中所说的话
PHP will automatically convert the value behind the scenes to the underlying type corresponding to your binding type string. i.e.:
$var = true;
bind_param('i', $var); // forwarded to Mysql as 1
我花了将近一个月的时间才搞清楚如何让会话处理函数在 PHP 中工作。我只有一个问题,bind_param
函数使用 i
而不是 s
来获取记录。
$stmt = $mysqli->prepare("SELECT data FROM session WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
这个 $id
是一个包含数字和字母的会话 ID,例如:e5eeire57wjeuewq8w
即使我没有这个会话的记录,这个查询 returns 大约 8 条记录在 num_rows
。所以我通过在绑定参数中放置 s
而不是 i
来解决这个问题。
我的问题是,为什么绑定参数将我的字符串视为整数?为什么它 return 8 行,即使我有 0 行具有此 ID?
bind_param page 上有一条评论证实了 Jon 在评论中所说的话
PHP will automatically convert the value behind the scenes to the underlying type corresponding to your binding type string. i.e.:
$var = true;
bind_param('i', $var); // forwarded to Mysql as 1