php開發中常用到的資料庫操作方法函數

來源:互聯網
上載者:User

今天把在php教程開發中常用到的資料庫教程操作方法函數總結分析一下了,希望有興趣的朋友可以參考一下。
一、資料庫操作
1. 串連MYSQL資料
mysql教程_connect()

提示和注釋
注釋:指令碼一結束,到伺服器的串連就被關閉,除非之前已經明確調用 mysql_close() 關閉了。
提示:要建立一個持久串連,請使用 mysql_pconnect() 函數。
例子

<?php
$con = mysql_connect("localhost","mysql_user","mysql_pwd");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// 一些代碼...

mysql_close($con);
?>

e.g.

$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or die(‘ www.111cn.net Unable to connect, please check connection paremeters’);


 2. 選擇資料庫
mysql_select_db()
串連上資料庫後,PHP預設選擇的資料庫未必是我們後面操作中需要的資料庫,為確保資料庫選擇正確,一般在資料庫連接語句後面還要加上資料庫選擇語句。

mysql_select_db() 函數設定活動的 MySQL 資料庫。
如果成功,則該函數返回 true。如果失敗,則返回 false。
文法
mysql_select_db(database,connection)
參數 描述
database 必需。規定要選擇的資料庫。
connection 可選。規定 MySQL 串連。如果未指定,則使用上一個串連。

e.g.
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));
3. 執行SQL語句
mysql_query()
該函數將SQL語句發送到當前活動的資料庫並執行語句,返回結果。

定義和用法
mysql_query() 函數執行一條 MySQL 查詢。
文法
mysql_query(query,connection)
參數 描述
query 必需。規定要發送的 SQL 查詢。注釋:查詢字串不應以分號結束。
connection 可選。規定 SQL 串連標識符。如果未規定,則使用上一個開啟的串連。
說明
如果沒有開啟的串連,本函數會嘗試無參數調用 mysql_connect() 函數來建立一個串連並使用之。
傳回值
mysql_query() 僅對 SELECT,SHOW,EXPLAIN 或 DESCRIBE 語句返回一個資源標識符,如果查詢執行不正確則返回 FALSE。
對於其它類型的 SQL 陳述式,mysql_query() 在執行成功時返回 TRUE,出錯時返回 FALSE。
非 FALSE 的傳回值意味著查詢是合法的並能夠被伺服器執行。這並不說明任何有關影響到的或返回的行數。很有可能一條查詢執行成功了但並未影響到或並未返回任何行。

e.g.

$query = “SELECT * FROM $table”
$result = mysql_query($query, $db) or die(mysql_error($db));


4. 關閉資料庫
mysql_close()
該函數用於關閉不需要繼續活躍的資料庫,但該方法不是必須的,一般PHP會自動關閉不繼續活躍的資料庫。
e.g.
mysql_close($db);
5. 釋放SQL結果
mysql_free_result()
該函數用於釋放mysql_query()執行結果佔用的記憶體,該函數很少被調用,除非result很大,佔用太多記憶體;一般在PHP指令碼執行結束之後很自動釋放佔用的記憶體。
e.g
ysql_free_result() 函數釋放結果記憶體。
如果成功,則返回 true,如果失敗,則返回 false。
文法
mysql_free_result(data)
參數 描述
data 必需。要釋放的結果標識符。該結果標識符是從 mysql_query() 返回的結果。
提示和注釋
注釋:mysql_free_result() 僅需要在考慮到返回很大的結果集時會佔用多少記憶體時調用。在指令碼結束後所有關聯的記憶體都會被自動釋放。
例子

<?php
$con = mysql_connect("localhost", "peter", "abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

$db_selected = mysql_select_db("test_db",$con);

$sql = "SELECT * from Person";
$result = mysql_query($sql,$con);
print_r(mysql_fetch_row($result));

// 釋放記憶體

 

mysql_free_result($result);

$sql = "SELECT * from Customers";
$result = mysql_query($sql,$con);
print_r(mysql_fetch_row($result));

mysql_close($con);
?>

二、SQL執行結果操作
1. 返回執行結果中的一行
mysql_fetch_row()
返回執行結果的當前行的數值數組,執行這個函數後,結果指向下一行。
e.g.
$row = mysql_fetch_row($result);
處理執行結果一般放在while迴圈中,遍曆每一行
e.g.
while($row = mysql_fetch_row($result))
{……}
2. mysql_fetch_row()的替代方法
mysql_fetch_array()
mysql_fetch_assoc()
mysql_fetch_array()返回索引值對數組,鍵為查詢的table的列名;
mysql_fetch_assoc()返回結果時可以先排序(如果為選擇性參數賦值),相當於mysql_fetch_array()+MYSQL_ASSOC
3. 執行結果的欄位(列)屬性
mysql_fetch_field()
eg.
mysql_fetch_field() 函數從結果集中取得列資訊並作為對象返回。
mysql_fetch_field() 可以用來從查詢結果中取得欄位的資訊。如果沒有指定欄位位移量,則提取下一個尚未被 mysql_fetch_field() 取得的欄位。
該函數返回一個包含欄位資訊的對象。
被返回的對象的屬性為:
name - 列名
table - 該列所在的表名
max_length - 該列最大長度
not_null - 1,如果該列不能為 NULL
primary_key - 1,如果該列是 primary key
unique_key - 1,如果該列是 unique key
multiple_key - 1,如果該列是 non-unique key
numeric - 1,如果該列是 numeric
blob - 1,如果該列是 BLOB
type - 該列的類型
unsigned - 1,如果該列是無符號數
zerofill - 1,如果該列是 zero-filled
文法
mysql_fetch_field(data,field_offset)
參數 描述
data 必需。要使用的資料指標。該資料指標是從 mysql_query() 返回的結果。
field_offset 必需。規定從哪個欄位開始。0 指示第一個欄位。如果未設定,則取回下一個欄位。
提示和注釋
注釋:本函數返回的欄位名是區分大小寫。
例子

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

$db_selected = mysql_select_db("test_db",$con);

$sql = "SELECT * from Person";
$result = mysql_query($sql,$con);

while ($property = mysql_fetch_field($result))
  {
  echo "Field name: " . $property->name . "<br />";
  echo "Table name: " . $property->table . "<br />";
  echo "Default value: " . $property->def . "<br />";
  echo "Max length: " . $property->max_length . "<br />";
  echo "Not NULL: " . $property->not_null . "<br />";
  echo "Primary Key: " . $property->primary_key . "<br />";
  echo "Unique Key: " . $property->unique_key . "<br />";
  echo "Mutliple Key: " . $property->multiple_key . "<br />";
  echo "Numeric Field: " . $property->numeric . "<br />";
  echo "BLOB: " . $property->blob . "<br />";
  echo "Field Type: " . $property->type . "<br />";
  echo "Unsigned: " . $property->unsigned . "<br />";
  echo "Zero-filled: " . $property->zerofill . "<br /><br />";
  }

mysql_close($con);
?>

4. 查詢資料庫中的表名
我們要顯示所有的表就會用到mysql_list_tables用法文法來操作,
mysql_list_tables 文法

mysql_list_tables()
e.g.
$db_name = MYSQL_DB;
$result = mysql_list_tables($db_name);
echo “資料庫中包含如下表:”;
while ($row = mysql_fetch_row($result))
{
echo $row[0];
}


5. 查詢資料庫的列名(欄位名)

esource mysql_list_fields ( string database_name, string table_name [, resource link_identifier] )

mysql_list_fields() 取得給定表名的資訊。參數是資料庫名和表名。返回一個結果指標,可以用於 mysql_field_flags(),mysql_field_len(),mysql_field_name() 和 mysql_field_ty

mysql_list_fields()
e.g.
$fields = mysql_list_fields($db_name,$table);
$columns = mysql_num_fields($fields);
for ($i = 0; $i < $columns; $i++)
echo  mysql_field_name($fields, $i);


三、其他函數
1. mysql_num_rows()

mysql_num_rows() 函數返回結果集中行的數目。
文法
mysql_num_rows(data)
參數 描述
data 必需。結果集。該結果集從 mysql_query() 的調用中得到。
說明
mysql_num_rows() 返回結果集中行的數目。此命令僅對 SELECT 語句有效。要取得被 INSERT,UPDATE 或者 DELETE 查詢所影響到的行的數目,用 mysql_affected_rows()。
返回執行結果的行數。
e.g.

$num = mysql_num_rows($result);


2. mysql_num_fields()
返回執行結果的列數(欄位數)。
e.g. $num = mysql_num_fields($result);
3.mysql_set_charset()
設定執行結果的編碼,防止在網頁中顯示中文時亂碼。
e.g.

$query = “select * from $table_name”;
mysql_query(‘set names utf8′);
$result = mysql_query($query, $db) or die(mysql_error($db));


註:
1. 文中大寫代碼為預定義的內容,如define(MYSQL_HOST,  ‘localhost’);

聯繫我們

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