PHP データベースは PDO オペレーション クラス (mysql) に基づいています
この記事で共有されている内容は、PHP データベースが PDO 操作クラス (mysql) に基づいているということです。必要な友達はこの記事の内容を参照してください。
PHP データベースはベースになっています。 PDO 操作クラス (mysql) について
これはオンラインで見つけた、初心者が使用するのに非常に適した Mysql に関する操作クラスです
<?phpclass Mysql { protected static $_dbh = null; //静态属性,所有数据库实例共用,避免重复连接数据库 protected $_dbType = 'mysql'; protected $_pconnect = true; //是否使用长连接 protected $_host = 'localhost'; protected $_port = 3306; protected $_user = 'root'; protected $_pass = ''; protected $_dbName = null; //数据库名 protected $_sql = false; //最后一条sql语句 protected $_where = ''; protected $_order = ''; protected $_limit = ''; protected $_field = '*'; protected $_clear = 0; //状态,0表示查询条件干净,1表示查询条件污染 protected $_trans = 0; //事务指令数 /** * 初始化类 * @param array $conf 数据库配置 */ public function __construct(array $conf) { class_exists('PDO') or die("PDO: class not exists."); $this->_host = $conf['host']; $this->_port = $conf['port']; $this->_user = $conf['user']; $this->_pass = $conf['password']; $this->_dbName = $conf['dbname']; //连接数据库 if ( is_null(self::$_dbh) ) { $this->_connect(); } } /** * 连接数据库的方法 */ protected function _connect() { $dsn = $this->_dbType.':host='.$this->_host.';port='.$this->_port.';dbname='.$this->_dbName; //持久化连接 $options = $this->_pconnect ? array(PDO::ATTR_PERSISTENT=>true) : array(); try { $dbh = new PDO($dsn, $this->_user, $this->_pass, $options); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //设置如果sql语句执行错误则抛出异常,事务会自动回滚 $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //禁用prepared statements的仿真效果(防SQL注入) } catch (PDOException $e) { die('Connection failed: ' . $e->getMessage()); } $dbh->exec('SET NAMES utf8'); self::$_dbh = $dbh; } /** * 字段和表名添加 `符号 * 保证指令中使用关键字不出错 针对mysql * @param string $value * @return string */ protected function _addChar($value) { if ('*'==$value || false!==strpos($value,'(') || false!==strpos($value,'.') || false!==strpos($value,'`')) { //如果包含* 或者 使用了sql方法 则不作处理 } elseif (false === strpos($value,'`') ) { $value = '`'.trim($value).'`'; } return $value; } /** * 取得数据表的字段信息 * @param string $tbName 表名 * @return array */ protected function _tbFields($tbName) { $sql = 'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME="'.$tbName.'" AND TABLE_SCHEMA="'.$this->_dbName.'"'; $stmt = self::$_dbh->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); $ret = array(); foreach ($result as $key=>$value) { $ret[$value['COLUMN_NAME']] = 1; } return $ret; } /** * 过滤并格式化数据表字段 * @param string $tbName 数据表名 * @param array $data POST提交数据 * @return array $newdata */ protected function _dataFormat($tbName,$data) { if (!is_array($data)) return array(); $table_column = $this->_tbFields($tbName); $ret=array(); foreach ($data as $key=>$val) { if (!is_scalar($val)) continue; //值不是标量则跳过 if (array_key_exists($key,$table_column)) { $key = $this->_addChar($key); if (is_int($val)) { $val = intval($val); } elseif (is_float($val)) { $val = floatval($val); } elseif (preg_match('/^\(\w*(\+|\-|\*|\/)?\w*\)$/i', $val)) { // 支持在字段的值里面直接使用其它字段 ,例如 (score+1) (name) 必须包含括号 $val = $val; } elseif (is_string($val)) { //将字符串中的单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符转义 $val = '"'.addslashes($val).'"'; } $ret[$key] = $val; } } return $ret; } /** * 执行查询 主要针对 SELECT, SHOW 等指令 * @param string $sql sql指令 * @return mixed */ protected function _doQuery($sql='') { $this->_sql = $sql; $pdostmt = self::$_dbh->prepare($this->_sql); //prepare或者query 返回一个PDOStatement $pdostmt->execute(); $result = $pdostmt->fetchAll(PDO::FETCH_ASSOC); return $result; } /** * 执行语句 针对 INSERT, UPDATE 以及DELETE,exec结果返回受影响的行数 * @param string $sql sql指令 * @return integer */ protected function _doExec($sql='') { $this->_sql = $sql; return self::$_dbh->exec($this->_sql); } /** * 执行sql语句,自动判断进行查询或者执行操作 * @param string $sql SQL指令 * @return mixed */ public function doSql($sql='') { $queryIps = 'INSERT|UPDATE|DELETE|REPLACE|CREATE|DROP|LOAD DATA|SELECT .* INTO|COPY|ALTER|GRANT|REVOKE|LOCK|UNLOCK'; if (preg_match('/^\s*"?(' . $queryIps . ')\s+/i', $sql)) { return $this->_doExec($sql); } else { //查询操作 return $this->_doQuery($sql); } } /** * 获取最近一次查询的sql语句 * @return String 执行的SQL */ public function getLastSql() { return $this->_sql; } /** * 插入方法 * @param string $tbName 操作的数据表名 * @param array $data 字段-值的一维数组 * @return int 受影响的行数 */ public function insert($tbName,array $data){ $data = $this->_dataFormat($tbName,$data); if (!$data) return; $sql = "insert into ".$tbName."(".implode(',',array_keys($data)).") values(".implode(',',array_values($data)).")"; return $this->_doExec($sql); } /** * 删除方法 * @param string $tbName 操作的数据表名 * @return int 受影响的行数 */ public function delete($tbName) { //安全考虑,阻止全表删除 if (!trim($this->_where)) return false; $sql = "delete from ".$tbName." ".$this->_where; $this->_clear = 1; $this->_clear(); return $this->_doExec($sql); } /** * 更新函数 * @param string $tbName 操作的数据表名 * @param array $data 参数数组 * @return int 受影响的行数 */ public function update($tbName,array $data) { //安全考虑,阻止全表更新 if (!trim($this->_where)) return false; $data = $this->_dataFormat($tbName,$data); if (!$data) return; $valArr = ''; foreach($data as $k=>$v){ $valArr[] = $k.'='.$v; } $valStr = implode(',', $valArr); $sql = "update ".trim($tbName)." set ".trim($valStr)." ".trim($this->_where); return $this->_doExec($sql); } /** * 查询函数 * @param string $tbName 操作的数据表名 * @return array 结果集 */ public function select($tbName='') { $sql = "select ".trim($this->_field)." from ".$tbName." ".trim($this->_where)." ".trim($this->_order)." ".trim($this->_limit); //echo $sql; $this->_clear = 1; $this->_clear(); return $this->_doQuery(trim($sql)); } /** * @param mixed $option 组合条件的二维数组,例:$option['field1'] = array(1,'=>','or') * @return $this */ public function where($option) { if ($this->_clear>0) $this->_clear(); $this->_where = ' where '; $logic = 'and'; if (is_string($option)) { $this->_where .= $option; } elseif (is_array($option)) { foreach($option as $k=>$v) { if (is_array($v)) { $relative = isset($v[1]) ? $v[1] : '='; $logic = isset($v[2]) ? $v[2] : 'and'; $condition = ' ('.$this->_addChar($k).' '.$relative.' '.$v[0].') '; } else { $logic = 'and'; $condition = ' ('.$this->_addChar($k).'='.$v.') '; } $this->_where .= isset($mark) ? $logic.$condition : $condition; $mark = 1; } } return $this; } /** * 设置排序 * @param mixed $option 排序条件数组 例:array('sort'=>'desc') * @return $this */ public function order($option) { if ($this->_clear>0) $this->_clear(); $this->_order = ' order by '; if (is_string($option)) { $this->_order .= $option; } elseif (is_array($option)) { foreach($option as $k=>$v){ $order = $this->_addChar($k).' '.$v; $this->_order .= isset($mark) ? ','.$order : $order; $mark = 1; } } return $this; } /** * 设置查询行数及页数 * @param int $page pageSize不为空时为页数,否则为行数 * @param int $pageSize 为空则函数设定取出行数,不为空则设定取出行数及页数 * @return $this */ public function limit($page,$pageSize=null) { if ($this->_clear>0) $this->_clear(); if ($pageSize===null) { $this->_limit = "limit ".$page; } else { $pageval = intval( ($page - 1) * $pageSize); $this->_limit = "limit ".$pageval.",".$pageSize; } return $this; } /** * 设置查询字段 * @param mixed $field 字段数组 * @return $this */ public function field($field){ if ($this->_clear>0) $this->_clear(); if (is_string($field)) { $field = explode(',', $field); } $nField = array_map(array($this,'_addChar'), $field); $this->_field = implode(',', $nField); return $this; } /** * 清理标记函数 */ protected function _clear() { $this->_where = ''; $this->_order = ''; $this->_limit = ''; $this->_field = '*'; $this->_clear = 0; } /** * 手动清理标记 * @return $this */ public function clearKey() { $this->_clear(); return $this; } /** * 启动事务 * @return void */ public function startTrans() { //数据rollback 支持 if ($this->_trans==0) self::$_dbh->beginTransaction(); $this->_trans++; return; } /** * 用于非自动提交状态下面的查询提交 * @return boolen */ public function commit() { $result = true; if ($this->_trans>0) { $result = self::$_dbh->commit(); $this->_trans = 0; } return $result; } /** * 事务回滚 * @return boolen */ public function rollback() { $result = true; if ($this->_trans>0) { $result = self::$_dbh->rollback(); $this->_trans = 0; } return $result; } /** * 关闭连接 * PHP 在脚本结束时会自动关闭连接。 */ public function close() { if (!is_null(self::$_dbh)) self::$_dbh = null; } }
以上がPHP データベースは PDO オペレーション クラス (mysql) に基づいていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。
