mysql_real_escape_string()、addslashes()
虽然可以做到一定程度的防止SQL注入,但是在一些情况下还是不可避免的被绕过去,导致出现SQL注入的风险。
为了更好地防止SQL注入,使用预处理可以很好地做到SQL注入
这里以mysqli为例说明,因为我大部分在PHP中都是使用mysqli
$usersCountSql = "SELECT COUNT(ID) AS COUNT FROM DS_USER_TABLE WHERE DS_USER_COMPANY_ID = ?";//SQL
$usersCountStmt = mysqli_prepare($connect,$usersCountSql);//预处理
mysqli_stmt_bind_param($usersCountStmt, "s",$DS_COMPANY_ID);//参数绑定 类型:s文字 d数字
mysqli_stmt_execute($usersCountStmt);
mysqli_stmt_store_result($usersCountStmt);//结果集存储
$count;//结果绑定用
mysqli_stmt_bind_result($usersCountStmt,$count);//查询结果列绑定到$count
mysqli_stmt_fetch($usersCountStmt);//假设结果为10 那么$count就是10 多条数据使用循环遍历