方法一:特殊字符转义
Mysql中的特殊字符如下:
特殊字符 | 转议字符 | 特殊意义 |
---|---|---|
\0 | \\0 | 字符串结束符NULL |
’ | \’ | 单引号 |
" | \" | 双引号 |
\b | \\b | 退格 |
\n | \\n | 换行 |
\r | \\r | 回车 |
\Z | \\Z | Control+Z |
\ | \\ | 反斜杠 |
% | \% | 百分号,模糊查询中匹配任意个任意字符 |
_ | \_ | 百分号,模糊查询中匹配任意个任意字符 |
- 使用mysql C API提供了mysql_real_escape_string函数对转义字符进行处理
- 开启php的魔术模式,使magic_quotes_gpc = on
而对于%和_这2个只在模糊查询条件中有特殊含义,而在普通字符串中没有其他含义的字符,需要根据字符使用在SQL语句中的具体位置来决定是否需要处理。。
方法二:预处理语句
-
使用PDO
$pdo->prepare(‘SELECT * FROM users WHERE username = :username’);
$pdo->execute(array(’:username’ => $_GET[‘username’])); -
使用mysqli
$query = $mysqli->prepare(‘SELECT * FROM users WHERE username = ?’);
$query->bind_param(‘s’, $_GET[‘username’]);
$query->execute();