實測:
將單引號(')和雙引號(")替換成轉移單引號(\')和轉移雙引號(\")即可
轉:
https://www.cnblogs.com/xcxc/p/3534647.htm
mysql語句中有引號的問題解決方案
在mysql的查詢、修改、插入、刪除的sql語句里有引號如何處理?
例如:
1
2
3
4
5
6
7
8
|
<?
$name
=
"my name is xcxc"
;
$people
=
"i'm chinese people"
;
$sql
=
"update table set field1='$name', field2='$people'"
;
?>
|
其實有很多方法可以解決,比如strtr、str_replace等字符串替換函數,將單引號(')和雙引號(")替換成轉移單引號(\')和轉移雙引號(\"),還可以使用addslashes函數將指定的預定義字符前添加反斜杠。
下面看看我的辦法
我使用的是htmlspecialchars() 函數,htmlspecialchars() 函數把一些預定義的字符轉換為 HTML 實體。
預定義的字符有:
- & (和號) 成為 &
- " (雙引號) 成為 "
- ' (單引號) 成為 '
- < (小於) 成為 <
- > (大於) 成為 >
語法:htmlspecialchars(string,quotestyle,character-set)
語法說明:
參數 | 描述 |
string | 必需。規定要轉換的字符串。 |
quotestyle | 可選。規定如何編碼單引號和雙引號。 ENT_COMPAT - 默認。僅編碼雙引號。 ENT_QUOTES - 編碼雙引號和單引號。 ENT_NOQUOTES - 不編碼任何引號。 |
character-set | 可選。字符串值,規定要使用的字符集。 ISO-8859-1 - 默認。西歐。 |
語法舉例:
1
2
3
4
|
<?php
$str
=
"i'm a chinese"
;
$str2
= htmlspecialchars(
$str
,ENT_QUOTES);
?>
|
例子
1
2
3
4
5
6
7
8
9
10
11
12
|
<html>
<body>
<?php
$str
=
"John & 'Adams'"
;
echo
htmlspecialchars(
$str
, ENT_COMPAT);
echo
"<br />"
;
echo
htmlspecialchars(
$str
, ENT_QUOTES);
echo
"<br />"
;
echo
htmlspecialchars(
$str
, ENT_NOQUOTES);
?>
</body>
</html>
|
瀏覽器輸出:
1
2
3
|
John &
'Adams'
John &
'Adams'
John &
'Adams'
|
如果在瀏覽器中查看源代碼,會看到這些 HTML:
1
2
3
4
5
6
7
|
<
html
>
<
body
>
John & 'Adams'<
br
/>
John & 'Adams'<
br
/>
John & 'Adams'
</
body
>
</
html
>
|
l