程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> php連接MySQL分析,php連接mysql

php連接MySQL分析,php連接mysql

編輯:MySQL綜合教程

php連接MySQL分析,php連接mysql


Mysql:在PHP腳本中操作MySQL數據庫的的幾個步驟如下:

  1、連接MySQL數據庫服務器,並判斷是否連接正確

  2、選擇數據庫,並設置字符集(可選)

  3、執行SQL命令

  4、處理結果集

  5、關閉數據庫連接

連接MySQL數據庫服務器,並判斷是否連接正確

mysql_connect()

mysql_connect()函數用來打開一個到 MySQL 服務器的連接。如果成功則返回一個資源, 或者在失敗時返回FALSE

resource mysql_connect ([ string $server [, string $username [, string $password [, bool $new_link [, int $client_flags ]]]]] )

mysql_errno()

mysql_errno()函數用於返回上一個 MySQL 操作中的錯誤信息的數字編碼

int mysql_errno ([ resource $link_identifier ] )

mysql_error()

mysql_error()函數用於返回上一個 MySQL 操作產生的文本錯誤信息。如果沒有指定連接資源號,則使用上一個成功打開的連接從 MySQL 服務器提取錯誤信息

string mysql_error ([ resource $link_identifier ] )
復制代碼
<?php
$link = mysql_connect('localhost','root','123456');
var_dump($link);//resource(3, mysql link)
if(!$link){
    die('連接失敗:'.mysql_error());
}
?>
復制代碼

選擇數據庫,並設置字符集(可選)

mysql_select_db()

mysql_select_db()函數用於選擇 MySQL 數據庫

bool mysql_select_db ( string $database_name [, resource $ link_identifier ] )
復制代碼
<?php
$link = mysql_connect('localhost','root','zhiaihebe0123');
var_dump($link);//resource(3, mysql link)
if(!$link){
    die('連接失敗:'.mysql_error());
}
mysql_select_db('bookstore',$link) or die('不能選定數據庫bookstore:' .mysql_error());

mysql_query('set names utf8');//設置字符集(一般不常用)
?>
復制代碼

執行SQL命令

mysql_query()

在PHP中,mysql_query()函數會將sql語句發送到MYSQL服務器並執行,mysql_query() 僅對 SELECT,SHOW,DESCRIBE, EXPLAIN 和其他語句返回一個resource,如果查詢出現錯誤則返回 FALSE;對於其它類型的 SQL 語句,比如INSERT, UPDATE, DELETE, DROP 之類, mysql_query() 在執行成功時返回 TRUE,出錯時返回 FALSE

mysql_affected_rows()

mysql_affected_rows()函數用於取得前一次 MySQL 操作所影響的記錄行數。執行成功則返回受影響的行的數目,如果最近一次查詢失敗的話,函數返回 -1

var_dump(mysql_affected_rows());//int3 

通常通過判斷mysql_affected_rows()函數的值是否大於0來確定數據操作是否成功

mysql_insert_id()

mysql_insert_id()函數用來取得上一步 INSERT 操作產生的 ID

復制代碼
<?php
$insert = "insert into books(bookname, publisher, author, price, detail) values
('PHP','電子工業出版社','張三','80.00','PHP相關'),
('ASP','電子工業出版社','李四','90.00','ASP相關'),
('JSP','電子工業出版社','王五','70.00','JSP相關')";
$result = mysql_query($insert);
if($result && mysql_affected_rows() > 0){
    //刷新頁面兩次後,相當於插入了兩次數據。頁面顯示數據記錄插入成功,最後一條插入的數據記錄id為:4
    echo "數據記錄插入成功,最後一條插入的數據記錄id為:".mysql_insert_id()."<br>";
}else{
    //若在數據表刪除後,則顯示數據記錄插入失敗,錯誤號:1146,錯誤原因:La table 'bookstore.books' n'existe pas
    echo "數據記錄插入失敗,錯誤號:".mysql_errno().",錯誤原因:".mysql_error()."<br>";
}
?>
復制代碼

實際上,由於4、5、6三條語句是同時插入的,這時顯示的是第一個id為4

處理結果集

在PHP腳本中執行SELECT查詢命令,也是調用mysql_query()函數,但和執行DML不同的是,執行SELECT命令之後,mysql_query()函數的返回值是一個PHP資源的引用指針(結果集)。這個返回值可以在各種結果集處理函數中,對結果數據表的各個字段進行處理

mysql_num_fields()

mysql_num_fields()函數取得結果集中字段的數目

int mysql_num_fields ( resource $result )

mysql_num_rows()

mysql_num_rows()函數取得結果集中行的數目

int mysql_num_rows ( resource $result )
$result = mysql_query("SELECT * FROM books");
$rows = mysql_num_rows($result);
$cols = mysql_num_fields($result);
var_dump($rows,$cols);//int 4 int 8

mysql_fetch_row()

mysql_fetch_row()函數從結果集中取得一行作為枚舉數組

array mysql_fetch_row ( resource $result )
復制代碼
$result = mysql_query("SELECT * FROM books");
$row = mysql_fetch_row($result);
//Array ( [0] => 1 [1] => PHP [2] => 電子工業出版社 [3] => 張三 [4] => 80.00 [5] => 0 [6] => [7] => PHP相關 )
print_r($row);
$row = mysql_fetch_row($result);
//Array ( [0] => 3 [1] => JSP [2] => 電子工業出版社 [3] => 王五 [4] => 70.00 [5] => 0 [6] => [7] => JSP相關 )
print_r($row);
復制代碼

mysql_fetch_assoc()

mysql_fetch_assoc()函數從結果集中取得一行作為關聯數組

array mysql_fetch_assoc ( resource $result )
復制代碼
$result = mysql_query("SELECT * FROM books");
$assoc = mysql_fetch_assoc($result);
//Array ( [id] => 1 [bookname] => PHP [publisher] => 電子工業出版社 [author] => 張三 [price] => 80.00 [ptime] => 0 [pic] => [detail] => PHP相關 )
print_r($assoc);
$assoc = mysql_fetch_assoc($result);
//Array ( [id] => 3 [bookname] => JSP [publisher] => 電子工業出版社 [author] => 王五 [price] => 70.00 [ptime] => 0 [pic] => [detail] => JSP相關 )
print_r($assoc);
復制代碼

mysql_fetch_array()

mysql_fetch_array()函數從結果集中取得一行作為關聯數組,或數字數組,或二者兼有。

mysql_free_result()

mysql_free_result()函數用於釋放結果內存

bool mysql_free_result ( resource $result )

mysql_free_result() 僅需要在考慮到返回很大的結果集時會占用多少內存時調用。在腳本結束後所有關聯的內存都會被自動釋放

關閉數據庫連接

mysql_close()

mysql_close()函數用於關閉 MySQL 連接

bool mysql_close ([ resource $link_identifier = NULL ] )

mysql_close() 關閉指定的連接標識所關聯的到 MySQL 服務器的非持久連接。如果沒有指定 link_identifier,則關閉上一個打開的連接

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