原文鏈接:http://www.orlion.ga/1140/
工作中數據庫的操作都被封裝好了,這些怎麼用的都快忘了干脆寫篇博客重新復習下,以後要是再忘記了可以看這篇文章。
PHP 5.5.0 起已廢棄
1、mysql_connect()
resource mysql_connect([ string $server [, string $username [, string $password [, bool$new_link [, int $client_flags ]]]]] )
$server:服務器地址可以包括端口號,如果 PHP 指令 mysql.default_host 未定義(默認情況),則默認值是 'localhost:3306'。 在 SQL 安全模式 時,參數被忽略,總是使用 'localhost:3306'。
$username:用戶名。默認值由 mysql.default_user 定義。 在 SQL 安全模式 時,參數被忽略,總是使用服務器進程所有者的用戶名。
$password:密碼。默認值由mysql.default_password定義。在 SQL 安全模式 時,參數被忽略,總是使用空密碼。
$new_link:如果用同樣的參數第二次調用 mysql_connect(),將不會建立新連接,而將返回已經打開的連接標識。參數new_link
改變此行為並使 mysql_connect() 總是打開新的連接,甚至當 mysql_connect() 曾在前面被用同樣的參數調用過。
$client_flags:使用以下常量:
MYSQL_CLIENT_COMPRESS
使用壓縮的通訊協議
MYSQL_CLIENT_IGNORE_SPACE
允許在函數名後留空格位
MYSQL_CLIENT_INTERACTIVE
允許設置斷開連接之前所空閒等候的 interactive_timeout 時間(代替 wait_timeout)。
MYSQL_CLIENT_SSL
使用 SSL 加密。本標志僅在 MySQL 客戶端庫版本為 4.x 或更高版本時可用。在 PHP 4 和 Windows 版的 PHP 5 安裝包中綁定的都是 3.23.x。
2、mysql_close()
bool mysql_close ([ resource $link_identifier = NULL ] )
mysql_close() 關閉指定的連接標識所關聯的到 MySQL 服務器的非持久連接。如果沒有指定 link_identifier
,則關閉上一個打開的連接.通常不需要使用 mysql_close(),因為已打開的非持久連接會在腳本執行完畢後自動關閉。PHP 4 Zend 引擎引進了引用計數系統,可以自動檢測到一個資源不再被引用了(和 Java 一樣)。這種情況下此資源使用的所有外部資源都會被垃圾回收系統釋放。因此,很少需要手工釋放內存。
3、mysql_select_db()
bool mysql_select_db ( string $database_name [, resource $ link_identifier ] )
如果沒有指定$link_identifier則使用上一個打開的數據庫連接,如果沒有打開的連接則將無參數調用mysql_connet()取得一個連接並使用。如果沒有連接則E_WARNING錯誤
4、mysql_query()
resource mysql_query ( string $query [, resource $link_identifier = NULL ] )
$query查詢字符串不應該以分號結束
$link_identifier如果不指定處理方式與mysql_select_db()相同。
返回值:
mysql_query() 僅對 SELECT,SHOW,DESCRIBE, EXPLAIN 和其他語句 語句返回一個 resource,如果查詢出現錯誤則返回 FALSE
。對於其它類型的 SQL 語句,比如INSERT, UPDATE, DELETE, DROP 之類, mysql_query() 在執行成功時返回 TRUE
,出錯時返回 FALSE
。返回的結果資源應該傳遞給 mysql_fetch_array() 和其他函數來處理結果表,取出返回的數據。假定查詢成功,可以調用 mysql_num_rows() 來查看對應於 SELECT 語句返回了多少行,或者調用mysql_affected_rows() 來查看對應於 DELETE,INSERT,REPLACE 或 UPDATE 語句影響到了多少行。如果沒有權限訪問查詢語句中引用的表時,mysql_query() 也會返回 FALSE
。
對於包含二進制數據的查詢,你必須使用mysql_real_query()而不是mysql_query(),因為二進制代碼數據可能包含“\0”字符,而且,mysql_real_query()比mysql_query()更快,因為它不會在查詢字符串上調用strlen()。如果查詢成功,函數返回零。如果發生一個錯誤,函數返回非零
5、mysql_affected_rows()
int mysql_affected_rows ([ resource $link_identifier = NULL ] )
取得最近一次與 link_identifier
關聯的 INSERT,UPDATE 或 DELETE 查詢所影響的記錄行數。
6、mysql_fetch_array()
array mysql_fetch_array ( resource $result [, int $ result_type ] )
將結果以數組方式返回,一次只返回一行,然後指向下一行(用while循環取出)如果沒有更多結果返回false。如果結果中有兩個或兩個以上的列有相同的字段名,最後一列將優先。如果sql中指定了別名則使用別名。PHP手冊中指出mysql_fetch_array並不明顯比mysql_fetch_row慢。
$result_type:可選:MYSQL_ASSOC(關聯數組),MYSQL_NUM(枚舉數組) 和 MYSQL_BOTH,默認值MYSQL_BOTH。
// MYSQL_NUM $result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_NUM)) { printf ("ID: %s Name: %s", $row[0], $row[1]); } // MYSQL_ASSOC $result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { printf ("ID: %s Name: %s", $row["id"], $row["name"]); } // MYSQL_BOTH $result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_BOTH)) { printf ("ID: %s Name: %s", $row[0], $row["name"]); }
7、其他函數:
string mysql_error ([ resource $link_identifier ] )
如果沒有指定數據庫連接則使用上一個連接,只返回最近一次mysql函數的錯誤文本。
bool mysql_set_charset ( string $charset [, resource $link_identifier = NULL ] )
設置字符集,數據庫連接的選擇與mysql_select_db()一樣。
string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
轉義 SQL 語句中使用的字符串中的特殊字符,並考慮到連接的當前字符集(這是與mysql_escape_string()的不同)