程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Mysql入門系列:對MYSQL查詢中有疑問的數據進行編碼

Mysql入門系列:對MYSQL查詢中有疑問的數據進行編碼

編輯:關於MYSQL數據庫

  6.8 其他主題

  本節包括幾個主題,這些主題不完全適合於本章從client1到client5 的開發中的任一小節的內容:

  ■ 在使用結果集元數據幫助驗證這些數據適合於計算之後,使用結果集數據計算結果。

  ■ 如何處理很難插入到查詢中的數據。

  ■ 如何處理圖形數據。

  ■ 如何獲得表結構的信息。

  ■ 常見的MySQL程序設計錯誤及如何避免。

  6.8.1在結果集上執行計算

  迄今為止,我們集中而主要地使用了結果集元數據來打印行數據,但很明顯,除打印之外,還有需要使用數據做其他事情的時候。例如,計算基於數據值的統計信息,應用元數據確保數據適合它們要滿足的需求。哪種類型的需求?對於啟動程序來說,可能要校驗一下正

  要執行數字計算的列實際上是否包含著數字!

  下面的列表顯示了一個簡單函數summary _ stats ( ) ,它獲取結果集和列索引,並產生列值的匯總統計。該函數還列出缺少數值的數量,它是通過檢查NULL 來檢測的。這些計算包括兩個數據所必須滿足的需求, summary_stats() 用結果集元數據來校驗:

  ■ 指定的列必須存在(也就是說,列索引必須在結果集列值的范圍內)。

  ■ 此列必須包括數字值。

  如果這些條件不滿足,則summary_stats() 只打印出錯誤消息並返回。代碼如下:

  

  

  

  請注意在mysql_fetch_row() 循環前面調用的mysql_ data _ seek( )。為獲得同樣的結果集,它允許多次調用summary _ stats()(假設要計算幾列的統計值的話)。每次調用summary _ stats( )都要“重新回到”到結果集的開始(這裡假設mysql_store_result() 創建結果集,如果用mysql_use_result() 創建結果集就只能按順序處理行,而且只能處理一次)。summary_stats() 是個相對簡單的函數,但它給我們一個提示,就是如何編寫一個比較復雜的計算程序,如兩個列的最小二乘回歸或者標准統計,如t -檢驗。

  6.8.2 對查詢中有疑問的數據進行編碼

  包括引號、空值和反斜線的數據值,如果把它們插入到查詢中,在執行查詢時就會產生一些問題。下面的討論論述了這些難點,並介紹了解決的辦法。假設要建造一個SELECT 查詢,它基於由name 指向的空終結串的內容:

  

   如果name 的值類似於“0’Malley, Brian”,這時進行的查詢就是非法的,因為引號在引用的字符串裡出現:

  

  需要特別注意這個引號,以便使服務器不將它解釋為name 的結尾。一種方法是在字符串內使用雙引號,這就是ANSI SQL 約定。SQL 支持這個約定,也允許引號在反斜線後使用:

  

  另一個有問題之處是查詢中任意二進制數據的使用,例如,在把圖形存儲到數據庫這樣的應用程序中會發生這種情況。因為二進制數值含有一些字符,把它放到查詢中是不安全的。為了解決這個問題,可使用mysql_ escape _ string( ),它可以對特殊字符進行編碼,使其在引用的字符串中可以使用。mysql_escape_string() 認為的特殊字符是指空字符、單引號、雙引號、反斜線、換行符、回車符和C ontrol - Z(最後一個在Windows 語言環境中出現)。什麼時候使用mysql_escape_string() 呢?最保險的回答是“始終”。然而,如果確信數據的形式並且知道它是正確的—可能因為預先執行了確認檢查—就不必編碼了。例如,如果處理電話號碼的字符串,它完全由數字和短線組成,那麼就不必調用mysql_ escape _ string( )了,否則還是要調用。

  mysql_escape_string() 對有問題的字符進行編碼是將它們轉換為以反斜線開頭的2個字符的序列。例如,空字符轉換為‘ 0’,這裡的0 是可打印的ASCII 碼0,而不是空。反斜線、單引號和雙引號分別轉換為‘ ’、‘’’和‘”’。調用mysql_escape_string() 的過程如下:

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved