我用了一个月的时间来弄清楚如何使会话处理函数在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?
答案 0 :(得分:2)
对bind_param page的评论确认了Jon在评论中所说的内容
PHP会自动将幕后的值转换为与绑定类型字符串对应的基础类型。即:
$var = true;
bind_param('i', $var); // forwarded to Mysql as 1