我可以安全地假设(如果我只是获取一个id号码)is_numeric是否足以阻止sql注入攻击?或者是否有可以通过is_numeric的sql注入方法?
你可以做得更好:
$id = isset($_GET['id']) ? (int) $_GET['id'] : 0;
这样就可以避免is_numeric功能开销.但是,这两种方法都足以避免注入(只要你对数据执行某些操作,如果is_numeric返回FALSE).如果有问题的$ _GET变量不存在,那么三元运算符也会确保您没有得到E_NOTICE.