首頁>技術>

因為開源的原因,PHP配合MySQL資料庫搭建網站的方式還是比較流行的,特別是創業型企業。今天把PHP對MySQL資料庫的連線、查詢等操作封裝了幾個函式,方便學習。

1、 資料庫配置資訊

把資料庫的資訊單獨用一個配置檔案儲存起來,方便維護,當然也可以把系統其他的配置資訊寫檔案中,一起維護。程式碼如下:

<?php

return [

// 資料庫連線配置

'DB_CONNECT' => [

'host' => 'localhost',

'user' => 'root',

'pass' => 'root123',

'dbname' => 'test',

'port' => '3306'

],

// 資料庫字符集

'DB_CHARSET' => 'utf8',

//系統資料分頁時每頁顯示資料記錄數

'Page'=>10,

];

2、讀取配置資訊

把讀取配置資訊的操作,封裝成一個函式,方便在程式的不同地方呼叫。

<?php

/**

* 讀取配置

* @param string $name 配置項

* @return mixed 配置值

*/

function config($name) {

static $config = null;

if (!$config) {

$config = require '../config/config.php';//配置檔案的路徑要正確

}

return isset($config[$name]) ? $config[$name] : '';

}

3、資料庫相關操作

資料庫操作主要是連線資料庫、資料的增刪改查操作,採用預處理的方式執行SQL語句,可以防止SQL注入的風險。

<?php

/**

* 連線資料庫

* @return mysqli 資料庫連線

*/

function db_connect(){

static $link = null;//定義為靜態的,建立連線後,再次呼叫資料庫連線 函式時,可以直接返回資料庫連線,而不是一直生成

if (!$link) {

$config = array_merge(['host' => '', 'user' => '', 'pass' => '', 'dbname' => '', 'port' => ''], config('DB_CONNECT'));//讀取資料庫配置,並和前面的空數組合並

if (!$link = call_user_func_array('mysqli_connect', $config)) {

exit('資料庫連線失敗:' . mysqli_connect_error());

}

mysqli_set_charset($link, config('DB_CHARSET'));

}

return $link;

}

/**

* 執行SQL語句

* @param string $sql SQL語句

* @param string $type 引數繫結的資料型別(i、d、s、b)

* @param array $data 引數繫結的資料

* @return mysqli_stmt

*/

function db_query($sql, $type = '', array $data = []){

$link = db_connect();

if (!$stmt = mysqli_prepare($link, $sql)) {

exit("SQL[$sql]預處理失敗:" . mysqli_error($link));

}

if (!empty($data)) {

$args = [$stmt, $type];

foreach ($data as &$args[]);

call_user_func_array('mysqli_stmt_bind_param', $args);

}

if (!mysqli_stmt_execute($stmt)) {

exit('資料庫操作失敗:' . mysqli_stmt_error($stmt));

}

return $stmt;

}

function db_fetch_all($sql, $type = '', array $data = []){//引數同上,獲得全部結果

$stmt = db_query($sql, $type, $data);

return mysqli_fetch_all(mysqli_stmt_get_result($stmt), MYSQLI_ASSOC);

}

function db_fetch_row($sql, $type = '', array $data = []){//引數同上,獲得一條記錄

$stmt = db_query($sql, $type, $data);

return mysqli_fetch_assoc(mysqli_stmt_get_result($stmt));

}

function db_exec($sql, $type = '', array $data = []){

$stmt = db_query($sql, $type, $data);

return (strtoupper(substr(trim($sql), 0, 6)) == 'INSERT') ? mysqli_stmt_insert_id($stmt) : mysqli_stmt_affected_rows($stmt);//如果執行的是插入操作,返回插入資料的ID,否則返回所影響的記錄行數

}

12
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • pyspark中呼叫 java中的FileSystem