方法一:特殊字符轉義
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();