为什么mysqli绑定函数无法正确处理我的字符串?

时间:2015-05-05 15:40:38

标签: php mysql mysqli prepared-statement

我用了一个月的时间来弄清楚如何使会话处理函数在PHP中运行。我只有一个问题,bind_param函数使用i来获取记录而不是s

$stmt = $mysqli->prepare("SELECT data FROM session WHERE  id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();

$id是一个会话ID,包含数字和字母,如:e5eeire57wjeuewq8w即使我没有此会话的记录,此查询也会在num_rows中返回大约8条记录。所以我通过在绑定参数中放置s而不是i来解决这个问题。

我的问题是,为什么绑定参数会将我的字符串视为整数?为什么它返回8行,即使我有0行这个id?

1 个答案:

答案 0 :(得分:2)

bind_param page的评论确认了Jon在评论中所说的内容

  

PHP会自动将幕后的值转换为与绑定类型字符串对应的基础类型。即:

$var = true;
bind_param('i', $var); // forwarded to Mysql as 1