1. 程式人生 > >第十三招 PHP之MySQLi簡易操作資料庫

第十三招 PHP之MySQLi簡易操作資料庫

圖解

MySQLi

 

建立連線

第一種方式:先建立連線後選擇資料庫。

<?php
$mysqli=new mysqli('localhost','root','root');
$mysqli->select_db('database');
?>

第二種方式:建立連線並指定資料庫。

<?php
$mysqli=new mysqli('localhost','root','root','database');
?>

第三種方式:建立連線後通過connect來開啟資料庫。

<?php
$mysqli=new mysqli();
$mysqli->connect('localhost','root','root','database');
?>

建立連線後可以檢視有無錯誤資訊

<?php
echo $mysqli->connect_errno;   //錯誤編號
echo $mysqli->connect_error;   //錯誤資訊
?>

 

設定字符集

建立連線後可以使用set_charset()成員函式進行設定字符集。

<?php
$mysqli->set_charset('uf8');
?>

執行SQL語句

跟MySQL客戶端類似,PHP要操作資料庫,首先把SQL語句寫好,然後呼叫query方法進行操作。

<?php
$mysqli=new mysqli('localhost','root','root','article');
$mysqli->set_charset('utf8');
$sql="SELECT * FROM user";
$result=$mysqli->query($sql);
print_r($result);
?>

 打印出來的結果如下:

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 2
    [lengths] => 
    [num_rows] => 1
    [type] => 0
)

對於結果集的操作

fetch_row():以索引陣列的形式返回一條記錄。

例如:當結果集中有記錄時,以索引陣列的形式遍歷整個結果集。

if( $result && $result->row_nums>0){
 var_dump($result->fetch_row());
}

fetch_assoc():以關聯陣列的形式返回一條記錄。

例如:當結果集中有記錄時,以關聯陣列的形式遍歷整個結果集。

if( $result && $result->row_nums>0){
 var_dump($result->fetch_assoc());
}

釋放結果集

當使用完查詢結果之後,我們可以使用free()成員函式進行釋放結果集。

<?php
$mysqli=new mysqli('localhost','root','root','brell');
$mysqli->set_charset('utf8');
$sql="SELECT * FROM user";
$result=$mysqli->query($sql);
$result->free();
?>

 

關閉連線

當操作資料庫完畢後可以使用close成員函式進行關閉資料庫連線。

<?php
$mysqli->close();
?>

MySQLi類參考

class mysqli {
/* 屬性 */
int $affected_rows;
int $connect_errno;
string $connect_error;
int $errno;
array $error_list;
string $error;
int $field_count;
string $client_info;
int $client_version;
string $host_info;
string $protocol_version;
string $server_info;
int $server_version;
string $info;
mixed $insert_id;
string $sqlstate;
int $thread_id;
int $warning_count;
/* 方法 */
int mysqli_affected_rows ( mysqli $link )
bool autocommit ( bool $mode )
public bool begin_transaction ([ int $flags = 0 [, string $name ]] )
bool change_user ( string $user , string $password , string $database )
string character_set_name ( void )
bool close ( void )
bool commit ( void )
int mysqli_connect_errno ( void )
string mysqli_connect_error ( void )
void connect ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] )
bool debug ( string $message )
bool dump_debug_info ( void )
int mysqli_errno ( mysqli $link )
array mysqli_error_list ( mysqli $link )
string mysqli_error ( mysqli $link )
int mysqli_field_count ( mysqli $link )
object get_charset ( void )
string get_client_info ( void )
int mysqli_get_client_version ( mysqli $link )
bool get_connection_stats ( void )
string mysqli_get_host_info ( mysqli $link )
int mysqli_get_proto_info ( mysqli $link )
string mysqli_get_server_info ( mysqli $link )
int mysqli_get_server_version ( mysqli $link )
mysqli_warning get_warnings ( void )
string mysqli_info ( mysqli $link )
mysqli init ( void )
mixed mysqli_insert_id ( mysqli $link )
bool kill ( int $processid )
bool more_results ( void )
bool multi_query ( string $query )
bool next_result ( void )
bool options ( int $option , mixed $value )
bool ping ( void )
public static int poll ( array &$read , array &$error , array &$reject , int $sec [, int $usec ] )
mysqli_stmt prepare ( string $query )
mixed query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
bool real_connect ([ string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket [, int $flags ]]]]]]] )
string escape_string ( string $escapestr )
bool real_query ( string $query )
public mysqli_result reap_async_query ( void )
public bool refresh ( int $options )
public bool release_savepoint ( string $name )
bool rollback ( void )
int rpl_query_type ( string $query )
public bool savepoint ( string $name )
bool select_db ( string $dbname )
bool send_query ( string $query )
bool set_charset ( string $charset )
void mysqli_set_local_infile_default ( mysqli $link )
bool set_local_infile_handler ( mysqli $link , callable $read_func )
string mysqli_sqlstate ( mysqli $link )
bool ssl_set ( string $key , string $cert , string $ca , string $capath , string $cipher )
string stat ( void )
mysqli_stmt stmt_init ( void )
mysqli_result store_result ([ int $option ] )
int mysqli_thread_id ( mysqli $link )
bool mysqli_thread_safe ( void )
mysqli_result use_result ( void )
int mysqli_warning_count ( mysqli $link )
}

 

mysqli::$affected_rows — Gets the number of affected rows in a previous MySQL operation
mysqli::autocommit — 開啟或關閉本次資料庫連線的自動命令提交事務模式
mysqli::begin_transaction — Starts a transaction
mysqli::change_user — Changes the user of the specified database connection
mysqli::character_set_name — 返回當前資料庫連線的預設字元編碼
mysqli::close — 關閉先前開啟的資料庫連線
mysqli::commit — 提交一個事務
mysqli::$connect_errno — Returns the error code from last connect call
mysqli::$connect_error — Returns a string description of the last connect error
mysqli::__construct — Open a new connection to the MySQL server
mysqli::debug — Performs debugging operations
mysqli::dump_debug_info — 將除錯資訊輸出到日誌
mysqli::errno — 返回最近函式呼叫的錯誤程式碼
mysqli::$error_list — Returns a list of errors from the last command executed
mysqli::$error — Returns a string description of the last error
mysqli::$field_count — Returns the number of columns for the most recent query
mysqli::get_charset — Returns a character set object
mysqli::$client_info — 獲取 MySQL 客戶端資訊
mysqli_get_client_version — 作為一個整數返回MySQL客戶端的版本
mysqli::get_connection_stats — 返回客戶端連線的統計資料
mysqli::$host_info — 返回一個表述使用的連線型別的字串
mysqli::$protocol_version — 返回MySQL使用的協議版本號
mysqli::$server_info — 返回MySQL伺服器的版本號
mysqli::$server_version — 作為一個整數返回MySQL伺服器的版本
mysqli::get_warnings — Get result of SHOW WARNINGS
mysqli::$info — 返回最近執行的 SQL 語句的資訊
mysqli::init — 初始化 MySQLi 並返回一個資源型別的值,這個值可以作為 mysqli_real_connect() 函式的傳入引數
mysqli::$insert_id — 返回最後一條插入語句產生的自增 ID
mysqli::kill — 讓伺服器殺掉一個 MySQL 執行緒
mysqli::more_results — 檢查批量查詢中是否還有查詢結果
mysqli::multi_query — 執行查詢
mysqli::next_result — 為讀取 multi_query 執行之後的下一個結果集做準備
mysqli::options — 設定選項
mysqli::ping — ping 一個連線,或者如果連線處於斷開狀態,重新連線
mysqli::poll — 輪詢連線
mysqli::prepare — 準備執行一個 SQL 語句
mysqli::query — 對資料庫執行一次查詢
mysqli::real_connect — 建立一個 MySQL 伺服器連線
mysqli::real_escape_string — 根據當前連線的字符集,對於 SQL 語句中的特殊字元進行轉義
mysqli::real_query — 執行一個mysql查詢
mysqli::reap_async_query — 獲取非同步查詢的結果
mysqli::refresh — 重新整理
mysqli::release_savepoint — 從當前事務的儲存點中移除一個命名儲存點
mysqli::rollback — 回退當前事務
mysqli::rpl_query_type — 返回 RPL 查詢型別
mysqli::savepoint — 在當前事務中增加一個命名儲存點
mysqli::select_db — 選擇用於資料庫查詢的預設資料庫
mysqli::send_query — 傳送請求並返回結果
mysqli::set_charset — 設定預設字元編碼
mysqli::set_local_infile_default — 取消使用者指定的回撥函式
mysqli::set_local_infile_handler — 設定 LOAD DATA LOCAL INFILE 命令的回撥函式
mysqli::$sqlstate — 返回上一次 SQL 操作的 SQLSTATE 錯誤資訊
mysqli::ssl_set — 使用 SSL 建立到資料庫之間的安全連線
mysqli::stat — 獲取當前系統狀態資訊
mysqli::stmt_init — 初始化一條語句並返回一個用於mysqli_stmt_prepare(呼叫)的物件
mysqli::store_result — 轉移上一次查詢返回的結果集
mysqli::$thread_id — 返回當前連線的執行緒 ID
mysqli::thread_safe — 返回是否是執行緒安全的
mysqli::use_result — Initiate a result set retrieval
mysqli::$warning_count — Returns the number of warnings from the last query for the given link