我想确保在int
查询中使用之前清除并验证MySQL
值。
这个项目没有使用预备语句,因为我意识到这是最好的选择,我特别询问有关投射int
,intval()
和filter_input()
的信息。
如果我进入$_POST['user_id']
。
$user_id = (int) $_POST['user_id'];
$user_id = intval($_POST['user_id');
$user_id = (int) filter_input(INPUT_POST, "user_id", FILTER_SANITIZE_NUMBER_INT);
$user_id = intval(filter_input(INPUT_POST, "user_id", FILTER_SANITIZE_NUMBER_INT));
其中哪一个是最佳选择?为了确保我使用整数,它被验证 - 如果它失败,它将返回0。
答案 0 :(得分:2)
您可能希望使用FILTER_VALIDATE_INT
编辑:使用min_range
选项1
,假设您在数据库中使用AUTO_INCREMENT
user_id
值
if($user_id = filter_input(INPUT_POST, 'user_id', FILTER_VALIDATE_INT, 1)){
//success
}
这验证它是一个整数,然后在验证通过时返回一个已清理的变量。
答案 1 :(得分:0)
我会用
$user_id = ctype_digit($_POST["user_id"]) ? (int)$_POST["user_id"] : 0;
$test = "123"; // 123
$test1 = "0123"; // 123
$test2 = "-123"; // 0
$test3 = "+123"; // 0
$test4 = "false"; // 0
$test5 = "null"; // 0
$test6 = "asd23"; // 0
$test6 = "23asd"; // 0
$test6 = "+123asd23"; // 0