PHP中MySQL的使用

來源:互聯網
上載者:User
串連到MySQL:

mysql_connect():

$dbc=mysql_connect($host,$user,$password);

選擇當前資料庫:

mysql_select_db($database_name);

mysql_select_db('$database_name',$conn);

eg:

  

  

如果函數不能返回有效資源連結,則會執行 or die(), die()函數會終止指令碼的執行。

執行簡單的查詢:

$result=mysql_query($query);

  

對於像insert、update、delete等簡單的查詢,它們不會返回記錄,$result變數將會返回true或false,這取決於查詢是否執行成功。對於確實會返回記錄的複雜查詢(select、show、describe和explain),如果查詢有效,則$result變數將是一個指向查詢結果的資源連結;如果查詢無效,則$result變數將為false。

 1  2  Thank you!';52   }53   else54   {55   echo 'System error'.mysql_error();56   }57   }58   else59   {60   echo '

Error!

';61 foreach($errors as $msg)62 {63 echo "-$msg
\n";64 }65 echo 'Please try again!';66 }67 ?>68

  

  

關閉現有的MySQL連結:

mysql_close(); //php會在指令碼的末尾自動關閉串連,所以這不是必須的。

檢索查詢結果

格式:

mysql_fetch_row(result);


說明:mysql_fetch_row用來查詢結果的一行儲存至數組,該數組下標從0開始,每一個數組元素對應

一個域。通過迴圈,可以將查詢結果全部獲得。

格式:

1 mysql_fetch_array(result);

  

說明:mysql_fetch_array和mysql_fetch_row功能基本相同,只不過它除了可以用從0開始的位移量作

索引,還可以用網域名稱作索引。

值返回下一行的所有域值,並將其儲存至一個數組中,沒有行時返回false。

mysql_query("set name 'GBK'")  

  

//使用GBK中文編碼

處理select查詢結果的主要工具是mysql_fetch_array(),它帶有一個查詢結果變數($result),並以數組格式一次返回一行資料。

從查詢讀取每條記錄:

  while($row=mysql_fetch_array($result))               {                     .........               }

  

mysql_fetch_array()函數還帶有一個可選項,用於指定返回的數組的類型:聯合數組、索引數組,或則兩者。聯合數組允許通過名稱引用列值,而索引數組則要求只使用數字,他們如下表:

常量

樣本

MYSQL_ASSOC

$row['column']

MYSQL_NUM

$row[0] (速度稍快)

MYSQL_BOTH

$row[0]或$row['column'] (預設)

釋放查詢資訊:

   mysql_free_result($result);

  

這一步不是必需的,因為PHP將在指令碼末尾自動釋放資源。

eg:

 1  8    NAMEid'; 9  10    while($row=mysql_fetch_array($result,MYSQL_ASSOC))11    {12    echo ''.$row['name'].''.$row['id'].'';13    }14    echo '';15    mysql_free_result($result);16   }17  18   else19   {20   echo '

The current users could not be retrieved.We apologize for any inconvenience

';21 echo mysql_error();22 }23 mysql_close();24 25 ?>

  

運行結果為:

技巧總結

mysql_fetch_array()函數與mysql_fetch($result,MYSQL_NUM)函數等價

mysql_fetch_assoc()函數與mysql_fetch_array($result,MYSQL_ASSOC)函數等價

必需使用mysql_query()執行查詢,然後使用mysql_fetch_array()來檢索單行資訊,如果要檢索多行,則可使用while迴圈(而不要使用for或foreach迴圈)。


確保SQL安全

關於PHP的資料庫安全可歸納為兩大類問題:

1.保護資料庫訪問資訊

2.在執行查詢時要小心。

使用特定的

mysql_real_escape_string()

函數,轉義那些有可能有問題的字元來清理資料:

$data=mysql_real_escape_string($data,$dbc);

這個函數與addslashes()一樣。它更特定於資料庫。

使用ini_get()函數測試Magic Quotes狀態,這個函數將為特定的選項返回PHP的設定檔中的配置。如果ini_get() 函數返回true,就說明開啟了Magic Quotes??則將在應用mysql_real_escape_string()之前,去除所有的斜杠。

在pHP的目前的版本中,Magic Quotes預設是關閉的,因此ini_get()將返回FALSE,並且不需要去除任何現有的斜杠。

如果Magic Quotes是開啟的情況下,它會自動在需要轉義的字元前加上“\”,而我們向資料庫中寫入的時候這往往會引起錯誤,所以需要使用stripslashes($string)把那些\去掉。然後再調用mysql_real_escape_string()函數。

eg:

1    function escape_data($data)2               {3          global $dbc;4          if(ini_get('magic_quotes_gpc'))5           {6         $data=stripslashes($data);7            }8   retrun mysql_real_escape_string(trim($data),$dbc);9   }

  

技巧總結

mysql_real_escape_String()函數一招所用的語言對字串進行轉義

mysql_real_escape_string()函數需要一個資料庫連接。

get_magic_quotes_gpc()函數也可用於返回當前的Magic Quotes設定。

ini_get()可用於擷取許多不同的php.ini設定的內容,不只是Magic Quotes的設定。

統計返回的記錄

mysql_num_rows(),返回select查詢索引的行數,並取查詢的結果作為一個參數。

eg:

$num=mysql_num_rows($result);

其他常用Mysql函數介紹

mysql_insert_id

傳回最後一次使用 INSERT 指令的 ID。


mysql_tablename

取得資料庫名稱

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.