mysql語句中有引號的問題解決方案


實測:

將單引號(')和雙引號(")替換成轉移單引號(\')和轉移雙引號(\")即可

 

 

 

轉:

 

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 實體。

 預定義的字符有:

  • & (和號) 成為 &amp;
  • " (雙引號) 成為 &quot;
  • ' (單引號) 成為 &#039;
  • < (小於) 成為 &lt;
  • > (大於) 成為 &gt;

語法:htmlspecialchars(string,quotestyle,character-set)

語法說明:

參數 描述
string 必需。規定要轉換的字符串。
quotestyle

可選。規定如何編碼單引號和雙引號。

 ENT_COMPAT - 默認。僅編碼雙引號。

ENT_QUOTES - 編碼雙引號和單引號。

ENT_NOQUOTES - 不編碼任何引號。

character-set

可選。字符串值,規定要使用的字符集。

ISO-8859-1 - 默認。西歐。
ISO-8859-15 - 西歐(增加 Euro 符號以及法語、芬蘭語字母)。
UTF-8 - ASCII 兼容多字節 8 比特 Unicode
cp866 - DOS 專用 Cyrillic 字符集
cp1251 - Windows 專用 Cyrillic 字符集
cp1252 - Windows 專用西歐字符集
KOI8-R - 俄語
GB2312 - 簡體中文,國家標准字符集
BIG5 - 繁體中文
BIG5-HKSCS - Big5 香港擴展
Shift_JIS - 日語
EUC-JP - 日語

語法舉例:

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 >

 

分類: MYSQL, PHP

l


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM