ホームページ バックエンド開発 PHPチュートリアル PHP Mysqli クラス コレクション

PHP Mysqli クラス コレクション

Jun 23, 2016 pm 02:30 PM

?出典: 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' ]、
&

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

phpstormでCLIモードをデバッグする方法は? phpstormでCLIモードをデバッグする方法は? Apr 01, 2025 pm 02:57 PM

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

See all articles