MySql資料庫-查詢、插入資料時轉義函數的使用

來源:互聯網
上載者:User

標籤:客戶   sla   strip   sql錯誤   使用   使用者名稱   案例   資料庫   escape   

  最近在看一部php的基礎視頻教程,在做案例的時,當通過使用者名稱查詢使用者資訊的時候,先使用了轉義函數對客戶提交的內容進行過濾之後再交給sql語句進行後續的操作。雖然能看到轉義函數本身的作用,但是仍然有一些疑惑。

  疑惑一:當轉義資料後,資料中會增加一些反斜線,為了能尋找出對應的資料,那麼原來存在資料庫中的資料是不是也已經被儲存成含有反斜線的了?

  疑惑二:轉義資料後再向資料庫中插入資料,儲存在資料庫中的資料是否會含有過濾後的反斜線?

  帶著這些疑問對使用者提交的表單進行測試。

 

  echo get_magic_quotes_gpc();  // 擷取當前 magic_quotes_gpc的配置選項設定,如果開啟了就會返回1,否則返回0

  

  $title = $_POST[‘title‘];

  $sql = insert into news(`title`) values(‘". $title ."‘);

  如果不適用mysql_real_escape_string()轉義函數,當接收的資料中包含單引號時就會引起sql錯誤。

  

  $title = mysql_real_escape_string($_POST[‘title‘]);  

  轉義過後再進行插入資料就不會出現上面的問題,而且插入到資料庫中的資料和輸入時的一樣,不會帶有轉義時增加的反斜線。

 

  當查詢資料時,也是按照輸入時的內容與資料庫進行比較,也能查詢出相應的結果。

 

  由此推論,mysql_real_escape_string()轉義函數只在sql語句執行的過程中起到保護作用,並不會對結果產生影響。

  將過濾函數貼出來。

 1 function check_input($value) 2 { 3     // 去除斜杠 4     if (get_magic_quotes_gpc()) 5     { 6         $value = stripslashes($value); 7     } 8     // 如果不是數字則加引號 9     if (!is_numeric($value))10     {11         $value = mysql_real_escape_string($value);12     }13     return $value;14 }

  

  以上是自己的理解,與大家分享,如果有誤還請大家批評指正。

  

 

MySql資料庫-查詢、插入資料時轉義函數的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.