PHP Mysqli クラス コレクション

WBOY
リリース: 2016-06-23 14:30:05
オリジナル
1072 人が閲覧しました

?出典: http://www.aplweb.co.uk/blog/php/mysqli-wrapper-class/

                  <p class="sycode">                  /** * Make an array of references to the values of another array * Note: useful when references rather than values are required * @param {array} array of values  * @return {array} references array */ function makeRefArr(&$arr) { $refs = array();  foreach($arr as $key => &$val) { $refs[$key] = &$val; }  return $refs; }  /** * Make a recursive copy of an array * @param {array} original array * @param {boolean} should the values to be cloned too? * @return {array} copy of source array */ function array_copy($arr, $deep= true) { $newArr = array();  if ($deep) { foreach ($arr as $key=>$val) { if (is_object($val)) { $newArr[$key] = clone($val); } else if (is_array($val)) { $newArr[$key] = array_copy($val); } else { $newArr[$key] = $val; } } } else { foreach ($arr as $key=>$val) { $newArr[$key] = $val; } }  return $newArr; }  /** * A mysqli wrapper class * * @author Andrew Lowndes (APL Web) * @date 20/11/2010 */ class db { public static $db = null;  //connect to the database public static function connect() { self::$db = new mysqli('localhost', 'username' ,'password', 'database');  if (mysqli_connect_errno()) { throw new Exception('Connection failed: ' . mysqli_connect_error()); }  self::$db->set_charset("utf8"); }  //close the connection public static function close() { if (self::$db) { self::$db->close(); } }  /** * Run a query and return the result * @param {string} query to run (with '?' for values) * @param {array} values to execute in prepared statement (optional) * @return {resource} result */ public static function query($query, $objs = array()) { if (!self::$db) self::connect();  $objs = (array)$objs; //automagically cast single values into an array  $statement = self::$db->prepare($query);  if (!$statement) { throw new Exception('Query failed: ' . self::$db->error); }  //go through all of the provided objects and bind them $types = array(); $values = array();  if (count($objs)>0) { foreach ($objs as $obj) { //get the object type and translate it ready for bind parameter $type = gettype($obj);  switch ($type) { case 'boolean': case 'integer': $types[] = 'i'; $values[] = intval($obj); break; case 'double': $types[] = 'd'; $values[] = doubleval($obj); break; case 'string': $types[] = 's'; $values[] = (string)$obj; break; case 'array': case 'object': $paramTypes[] = 's'; $values[] = json_encode($obj); break; case 'resource': case 'null': case 'unknown type': default: throw new Exception('Unsupported object passed through as query prepared object!'); } }  $params = makeRefArr($values); array_unshift($params, implode('', $types)); call_user_func_array(array($statement, 'bind_param'), $params); }  if (!$statement->execute()) { return null; } else { $statement->store_result(); return $statement; } }  /** * Determine if an object exists * @param {string} query to run * @param {array} objects to use in prepare query (optional) * @return {boolean} object exists in database */ public static function objectExists($query, $objs = array()) { $statement = self::query($query, $objs);  return (is_object($statement) && $statement->num_rows>0); }  /** * Make an associative array of field names from a statement * @param {resource} mysqli statement * @return {array} field names array */ private static function getFieldNames($statement) { $result = $statement->result_metadata(); $fields = $result->fetch_fields();  $fieldNames = array(); foreach($fields as $field) { $fieldNames[$field->name] = null; }  return $fieldNames; }  /** * Get an object from a query * @param {string} query to execute * @param {array} objects to use as the values (optional)  * @return {assoc} sinulatobject */ public static function getObject($query, $objs = array()) { $statement = self::query($query, $objs);  if (!is_object($statement) || $statement->num_rows<1) { return null; }  $fieldNames = self::getFieldNames($statement); call_user_func_array(array($statement, 'bind_result'), makeRefArr($fieldNames));  $statement->fetch(); $statement->close();  return $fieldNames; }  /** * Get a list of objects from the database * @param {string} query * @return {array} objects */ public static function getObjects($query, $objs = array()) { $statement = self::query($query, $objs);  if (!is_object($statement) || $statement->num_rows<1) { return array(); }  $fieldNames = self::getFieldNames($statement); call_user_func_array(array($statement, 'bind_result'), makeRefArr($fieldNames));  $results = array(); while ($statement->fetch()) { $results[] = array_copy($fieldNames); }  $statement->close();  return $results; }  /** * Get all of the data from a table * @param {string} table name * @return {array} table data */ public static function getTable($tableName) { if (!self::$db) self::connect();  $tableName = self::$db->escape_string($tableName);  return self::getObjects('SELECT * FROM `' . $tableName . '`;'); }  /** * Get a field from a table based on a field having a specific value * @param {string} table name * @param {string} field name * @param {mixed} field value * @return {array} table row data */ public static function getTableRow($tableName, $field, $value) { if (!self::$db) self::connect();  $tableName = self::$db->escape_string($tableName); $field = self::$db->escape_string($field);  return self::getObject('SELECT * FROM `' . $tableName . '` WHERE `' . $field . '` = ? LIMIT 1;', $value); }  /** * Get all related rows from a table based on a field having a specific value * @param {string} table name * @param {string} field name * @param {mixed} field value * @return {array} table row data */ public static function getTableRows($tableName, $field, $value, $sortField = null, $sortDesc = false) { if (!self::$db) self::connect();  $tableName = self::$db->escape_string($tableName); $field = self::$db->escape_string($field);  if ($sortField == null) { $sortField = $field; } else { $sortField = self::$db->escape_string($sortField); }  return self::getObjects('SELECT * FROM `' . $tableName . '` WHERE `' . $field . '` = ? ORDER BY `' . $sortField . '` ' . ($sortDesc ? 'DESC' : 'ASC') . ';', $value); } }                  </p>
ログイン後にコピー

?出典: http://www.nngcl.com/a/mysqlli/ 2011/0404/404.html

/**&*

'username']; $ this&gt = $ params ['passwore'] {$ params){
$ this-&gt; get_sever_info(); ;sql_version, '5.0.2','>=')) {
                                                $this->query("SET SESSION SQL_MODE=''");

else {


$this->halt('コネットデータベース
'.$params['dbname '].' 失敗したか、データベースが存在しません');
}
else {
$this->halt('Connet Mysql server unsuccess please check y config args');

else {

$this->halt('Class Db_mysql() args is error');
}


//Mysql サーバーに接続します。
public function db_connect($host,$user,$pwd) {

if($this->db_link) {

falseを返します。 //当Mysqlサーバーがすでに接続されている場合、程序不実行、戻り値false。
}
else {

$&gt; db_link = mysqli_connect($ user、$ pwd);後続の割り当てに影響を及ぼさないでください。失敗 ');                        }
}
else {
return false;
}


//获取Mysql サーバー情報
public function get_sever_info() {

if ($this->db_link) {
$this->sql_version = mysqli_get_server_info($this->db_link);
return $this->sql_version;
}
else {
return false;
}


//获取Mysql 错误情報。
public function sql_error() {

//当Mysql サーバーの接続が失敗しました。
if (!$this->db_link) {
return array(
'message'=>mysqli_connect_error(),
'code'=>mysqli_connect_errno(),
);
}

return array(
'message'=>@mysqli_error(), 'code'=>@mysqli_error(),
);



//从执行结果中获取一行情報、字段型的。
public function fetch_row($sql) {

if ($this->rows) {
($ this-&gt; rows); ) {
(Unset ($ this-> rows);
}



$ This-& GT; Query ($ SQL); ; Re Return $ This -& gt; rows;
}
// 取得実行結果、フィールドタイプ、出力タイプは、$&gt; myrow = array();$myrow[] = $row;myrow = $myrow; ️
// 実行結果からフィールドの型と数値の型、出力の型の両方の情報を取得します。
public function get_all $this-> ; myRow)実行結果を返します mysqli_num_rows($result)
        //关闭Mysql Server
        public function db_close($db_link) {
               
                if ($db_link) {
                        return mysqli_close($db_link);
                }
                else {
                        return false;
                }
        }
        
        //错误信息提示页面
        public function halt($message) {
               
                //错误页面TOP
                $page_top = <<



Mysql_error





 Mysql error


EOT;

                //错误页面底部
                $page_bottom = <<


 © 版权所有 2009 www.bc263.com. All rights reserved.





EOT;
$error_msg = $this->sql_error();


$page_content = 'Mysql エラー:
'.$message.'
gt;
Mysql エラーの説明:
'.$error_msg['message'].'
'.$error_msg['code'].'

年齢 URL: http://'.$_SERVER['SERVER_NAME'].$_SERVER[' SCRIPT_NAME'];

echo $page_top.$page_content.$page_bottom;

}

//分析関数関数、Db_mysql クラス実行後の清理战场作業を完了するため。
public function __destruct(){

$this->db_close($this->db_link);

}

//__Call()関数、存在しないメソッドを解決するための説明
public function __call($method, array $ args) {

$msg ='Db_mysql クラスにはメソッドがありません ' .$メソッド;

$this->halt($msg);
}
}

?自:http://www.admpub.com/post-79.html

class db {
/**
* *エラー番号
*/
パブリック static $is_error = false;
/**
* *実行エラー発生時に中断するかどうか
*/
public static $OnErrorStop = false;
/**
* *実行エラーが発生したときにエラーメッセージを表示するかどうか
*/
public static $OnErrorShow = true;
/**
* *現在のクエリ SQL ステートメント
*/
protected static $sql = '';
/**
* *mysqli オブジェクト
*/
protected static $mysqli = null;
/**
* *現在の結果セット
*/
protected static $result = false;
/**
* *クエリ統計の数
*/
protected static $query_count = 0;
/**
* * トランザクション処理のためにアカウントが開設されているかどうかを確認する現在のクエリ
*/
protected static $is_commit = false;

/**
- 一緒になっている」*/
public static function query($sql) {
self :: connect();
self :: $sql = $sql;
self :: $result = self :: $mysqli ->クエリ($sql);
if (self :: $mysqli -> error) {
$error = sprintf("SQL クエリ エラー: %srn", self :: $mysqli -> error);
self :: $is_error = true;
self :: log($error);
if (self :: $OnErrorStop) exit;
false を返します。
} else {
self :: $query_count++;
}
return self :: $result;
}
/**
*/
public static function data_scalar($sql) {
if (self :: $result = self :: query($sql)) {
return self :: fetch_scalar();
} else {
falseを返します。
}
}
/**
- オフオフアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトオフオフオフを介して*/
public static function data_row($sql, $assoc = false) {
if (self :: $result = self :: query($sql)) {
return self :: fetch_row(self :: $result, $assoc);
} else {
falseを返します。
}
}
/**
* *查询指定SQl 全て记录
* @param $sql [文字列] :SQL查询语句
* @param $key_field [string]: 結果のキー値を記録するために使用するフィールドを指定します。デフォルトは regI{0...count} を使用します
* @param $assoc [bool]: true は配列を返します。 false は stdClass オブジェクトを返します; デフォルトは FALSE * @RETURN は false を返しません
*/
public static function data_table ($ SQL, $ key_field = false, $ assoc = False) {
(Self :: $ Result = Sel f ::クエリ ($ SQL)) {
_scalar() {
if (!empty(self :: $result)) {

}
/**
* * 結果の最初の行と最初の列の値を取得します (self::$result)
* @return 結果がない場合は false を返します
*/
public static function fetch_row($result = null, $assoc = false) {


パブリック静的関数 fetch_all($key_field = $ass, oc = false) {
$rows = ($assoc) array() : new stdClass; $result; assoc)) {
if ($key_field != false) {
$regI = ($assoc) : $row -> } else {
> {
        }
self :: free_result();
return ($regI > -1) ? $rows : false;
}
/**
失敗しました
*/
public static function update($table, $data, $where) {
$set = '';
if (is_object($data) || is_array($data)) {
foreach ($data as $k => $v) {
self :: format_value($v);
$set .= empty($set) ? ("{$k}` = {$v}") : (", `{$k}` = {$v}");
}
} else {
$set = $data;
}
return self :: query("UPDATE `{$table}` SET {$set} WHERE {$where}");
}
/**
。 空の場合は $data のキーを取得します
* @return 成功した場合は true、失敗した場合は false を返します
*/
public static function insert($table, $data, $fields = null) {
if ($fields == null) {
foreach($data as $v) {
if (is_array($v)) {
$fields = array_keys($v);
} elseif (is_object($v)) {
foreach($v as $k2 => $v2) {
$fields[] = $k2;
}
} elseif (is_array($data)) {
$fields = array_keys($data);
} elseif (is_object($data)) {
foreach($data as $k2 => $v2) {
$fields[] = $k2;
}
}
休憩。
}
}
$_fields = '`' 。 implode('', '', $fields) 。 「」;
$_data = self :: format_insert_data($data);
return self :: query("INSERT INTO `{$table}` ({$_fields}) VALUES {$_data}");
}
/**
* *格式化插量データ
     * @param $data [array|stdClass] 待ち格式化の插入データ
* @return insert 中値後の SQL 形式
*/
protected static function format_insert_data($data) {
$output = '';
$is_list = false;
foreach ($data as $value) {
if (is_object($value) || is_array($value)) {
$is_list = true;
$tmp = '';
foreach ($value as $v) {
self :: format_value($v);
$tmp .= !empty($tmp) ? ", {$v}" : $v;
}
$tmp = "(" . $tmp . ")";
$output .= !empty($output) ? ", {$tmp}" : $tmp;
unset($tmp);
} else {
self :: format_value($value);
$output .= !empty($output) ? ", {$value}" : $value;
}
}
if (!$is_list) $output = '(' . $output . ')';
$output を返します。
}
/**
* *フォーマットされた値
* @param $ &$value [string] フォーマットされる文字列。データベースが受け入れられるフォーマットにフォーマットします
*/
protected static function format_value(&$value) {
$value =rim($value);
if ($value === null || $value == '') {
$value = 'NULL';
} elseif (preg_match('/[w+].(.*?)/', $value)) { // mysql関数数 格式:[UNHEX].(パラメータ);
$value = preg_replace('/[(w+)].((.*?))/', "$1($2)", $value);
} else {
// $value = "'" 。 addedlashes(stripslashes($value)) ."'";strip
$value = "'" 。 addedlashes(stripslashes($value)) 。 "";
}
}
/**
* *最後に挿入された ID を返します
*/
public static function insert_id() {
return self :: $mysqli ->挿入_id;
}
/**
* *結果セットの数を返します
*/
public static function num_rows($result = null) {
if (is_null($result)) $result = self :: $result;
return mysqli_num_rows($result);
}
/**
オフ*/
パブリック静的関数 total($table, $where = '1') {
        $sql = "SELECT count(*) FROM {$table} WHERE {$where}";
self :: query($sql);
return self :: fetch_scalar();
}
/**
* *現在のクエリ SQL ステートメントを返します
*/
public static function get_sql() {
return self :: $sql;
}
/**
* *現在のクエリの影響を受けるレコードの数を返します
*/
public static function get_nums() {
return self :: $result ->行数;
}
/**
* * トランザクション処理を開始し、MYSQL の自動コミット モードをオフにします
*/
public static function commit_begin() {
self :: connect();
self :: $is_error = false;
self :: $mysqli ->自動コミット(false); //イヤー处処理、不自动提交を使用します
self :: $is_commit = true;
}
/**
* *トランザクションを送信します
*/
public static function commit_end() {
if (self :: $is_commit) {
self :: $mysqli ->専念();
}
self :: $mysqli ->自動コミット(true); //耳処理、开启MYSQL の自動ハンド交換モードを使用しません
self :: $is_commit = false;
self :: $is_error = false;
}
/**
* *トランザクションのロールバック
*/
public static function rollback() {
self :: $mysqli ->ロールバック();
}
/**
* *データセットをリリースします
*/
public static function free_result($result = null) {
if (is_null($result)) $result = self :: $result;
@mysqli_free_result($result);
}
/**
* *データベースを選択
* @param $dbname [文字列] データベース名
*/
public static function select_db($dbname) {
self :: connect();
return self :: $mysqli -> select_db($dbname);
}
/**
* *Mysql に接続します
*/
保護された静的関数 connect() {
if (is_null(self :: $mysqli)) {
self :: $mysqli = new mysqli($GLOBALS['database'][ 'db_host'],
$GLOBALS['database']['db_user'],
$GLOBALS['database']['db_pass'],
$GLOBALS['database']['db_name' ]、
&

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート