關於Mysql查詢帶單引號及插入帶單引號字串問題

2022-09-29 05:09:12 字數 1281 閱讀 3631

mysql查詢帶引號和不帶引號區別

當資料庫欄位id為整型時

select id from table where id=1

和 select id from table where i程式設計客棧d='1'

兩條sql都是可以的,但是第一條sql不用進行隱式轉換,速度上比第二條sql略快一些

今天在向mysql資料庫中插入帶單引號字串的時候,什麼錯也沒報就是語句執行失敗,後來才知道,單引號等要轉義,可以使用函式:mysql_real_escape_string和addslashes函式;

以下做個介紹:往資料庫中插入資料之前是要先轉義的,在插入資料庫. 

本文很好的說明了addslashes和myswww.cppcns.comql_real_escape_string的區別,雖然國內很多php coder仍在依靠addslashes防止sql注入,我還是建議大家加強中文防止sql注入的檢查。addslashes的問題在於黑客可以用0xbf27來代替單引號,而addslashes只是將0xbf27修改為0xbf5c27,成為乙個有效的多位元組字元,其中的0xbf5c仍會被看作是單引號,所以addslashes無法成功攔截。

當然addslashes也不是毫無用處,它是用於單位元組字串的處理,多位元組字元還是用mysql_real_escape_string吧。

另外對於php手冊中get_magic_quotes_gpc的舉例:

複製** **如下:

<?php

if (!get_magic_quot else

?>

最好對magic_quotes_gpc已經開放的情況下,還是對$_post['lastname']進行檢查一下。

再說下mysql_real_escape_string和mysql_escape_string這2個函式的區別:

mysql_real_escapebwgomzpy_string 必須在(php 4 >= 4.3.0, php 5)的情況下才能使用。否則只能用 mysql_escape_string 程式設計客棧,兩者的區別是:

mysql_real_escape_string 考慮到連線的當前字符集,而mysql_escape_string 不考慮。

總結一下:

addslashes() 是強行加;

mysql_real_escape_string() 會判斷字符集,但是對php版本有要求;

mysql_escape_string不考慮連線的當前字符集。

本文標題: 關於mysql查詢帶單引號及插入帶單引號字串問題

本文位址:

關於向mysql資料庫中插入帶單引號字串的問題

今天在向mysql資料庫中插入帶單引號字串的時候,什麼錯也沒報就是語句執行失敗,後來才知道,單引號等要轉義,可以使用函式 mysql real escape string和addslashes函式 以下做個介紹 往資料庫中插入資料之前是要先轉義的,在插入資料庫.本文主要介紹的是用mysql real...

python字串引號和轉義 單引號字串和轉義符

1 單引號字串和轉義符 字串和數字一樣都是值,可以直接使用,在python控制台中直接輸入字串,如 hello world 會按原樣輸出該字串,只不過用單引號擴了起來 hello world hello world 那麼用雙引號和單引號括起來的字串有什麼區別呢?其實沒有任何區別,只不過在輸出單引號或...

如何在oracle中輸出帶單引號的字串

在sql或者plsql中如果要表達乙個帶有特殊字元的字串時,通常要用 包裝起來。但如果字串本身包含 a b 這樣的字元,那麼實現起來有點繁瑣。比如 this is a test 第一種實現方式 sql select this is a test from dual 其中的 表是的是兩個單引號,不是乙...