为什么 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