我有一个将 MySQL 表 ID 作为输入的函数。
而不是应用 mysql_real_escape_string,我可以只使用 is_numeric 吗?
像这样:
protected function validId($id) {
if(!is_numeric($id)) return false;
// else do stuff
}
编辑:
我还想提一下,我有时会使用这个:
$val = (int)$val;
这是 PHP 文档中关于类型转换的部分:http: //php.net/manual/en/language.types.type-juggling.php#language.types.typecasting
另外,我相信 mysql_real_escape_string 每次使用都需要访问数据库。为什么在验证整数时这样做?
编辑2:
此外,is_int() 不适用于表单输入,这就是我使用 is_numeric 的原因。但也许这样做可以解决问题并更快地工作/减少服务器负载:
protected function validId($id) {
if(!is_numeric($id)) return false; // confirm it is number or numeric string
$id = (int) $id; // cast to int (will chop off decimals I believe)
// do stuff
}