请检查
$user_id = (int)$_GET['user_id'];
$sql = 'DELETE FROM users WHERE user_id=:user_id';
$query = $db->prepare($sql);
$query->bindParam('user_id',$user_id,PDO::PARAM_STR);
$delete = $query->execute();
实际上它正在大量工作,它会从数据库中删除用户行
但这里的问题是我没有写过':'绑定查询中的该列 我的意思是
这应该是错的
$query->bindParam('user_id',$user_id,PDO::PARAM_STR);
这应该是正确的
$query->bindParam(':user_id',$user_id,PDO::PARAM_STR);
但它不会抛出任何异常并且用户行被成功删除
对此有何解释?
答案 0 :(得分:2)
这篇文章解释了为什么需要使用结肠。
Is the leading colon for parameter names passed to PDOStatement::bindParam() optional?
来自帖子:
不,因为文档没有提到这一点,我认为这是安全的 假设这种行为不是官方支持的,不应该 依靠。
然而,它确实发生了工作(至少在PHP 5.3.24中) - 在内部冒号将被添加到参数中,如果它丢失(参见 PHP 5.3.24源代码中的ext / pdo / pdo_stmt.c:363。