以前、ブログ投稿「PHP データベース操作: MySQL ネイティブ API から PDO へ」を投稿し、PHP が MySQL ネイティブ API、MySQLi プロセス指向、MySQLi オブジェクト指向、および PDO を使用して MySQL データベースを操作する方法を示しました。この記事では、ORMを使ってデータベースを操作する方法を紹介します。
ORMとは何ですか?ネットユーザーの引用:
ORM オブジェクト リレーショナル マッピング、O (オブジェクト) オブジェクトは、プロジェクト内のエンティティであり、より正確にはデータ モデルであり、永続クラスとも言えます。 R (Relation) リレーショナル データ、M (Mapping) マッピング。オブジェクトをリレーショナル データにマッピングし、リレーショナル データをオブジェクトにマッピングするプロセス。より直観的に理解すると、ORM は OOP 思考を使用して SQL ステートメントの追加、削除、変更、クエリを生成するということです。
PDO と比較して、ORM は SQL ステートメントを書かずに迅速な開発プロジェクトに適しています。ここでは、便利な ORM をいくつか紹介します。
Medoo
以下では例としてバージョン 1.0.2 を使用します。
環境要件
PHP 5.1以降、PHP 5.4以降を推奨し、PDOをサポートしています。
MySQL、MSSQL、SQLiteの少なくとも1つがインストールされている
インストール方法
MedooはComposerのインストールと直接ダウンロードをサポートしています。Composer を使用してインストール:
composer require catfan/Medoocomposer update直接ダウンロード:
https://github.com/catfan/Medoo/archive/master.zip
Medoo を導入してデータベースを構成します:
<?php//使用Composer安装的这样引入//require 'vendor/autoload.php';// 直接下载的这样引入require_once 'medoo.php'; // 初始化$db = new medoo([ 'database_type' => 'mysql', 'database_name' => 'test', 'server' => 'localhost', 'username' => 'root', 'password' => '123456', 'charset' => 'utf8', //可选:端口 'port' => 3306, //可选:表前缀 'prefix' => '', // PDO驱动选项 http://www.php.net/manual/en/pdo.setattribute.php 'option' => [ PDO::ATTR_CASE => PDO::CASE_NATURAL ]]);SQLite の場合:
$database = new medoo([ 'database_type' => 'sqlite', 'database_file' => 'my/database/path/database.db']);CURD
クエリ (読み取り):
select($table, $columns, $where) //获取所有记录- table [string] 表名- columns [string/array] 字段- where (可选) [array] 查询条件get($table, $columns, $where) //仅获取一条数据select($table, $join, $columns, $where)- table [string] 表名- join [array] 关联查询,如果没有可以忽略- columns [string/array] 字段- where (可选) [array] 查询条件例:
$user = $db->select('user', '*'); //返回所有数据$user = $db->get('user', '*'); //返回所有数据$user = $db->select('user','*', array('name ' => 'joy'));$user = $db->select('user','name', array('age[>] ' => 20)); $user = $db->select('user',['name','age'], array('age[<=] ' => 20));
新規 (作成):
insert($table, $data)例:
$db->insert('user', array('name'=> 't3', 'age'=>22)); //返回自增id注: データにサブ配列が含まれる場合s、それらはシリアル化されます( ) シリアル化するには、json_encode() を使用して JSON として保存できます。集計クエリ
update($table, $data, $where)上記のメソッドはすべて、関連クエリである 2 番目のパラメータ $join をサポートしています。
トランザクションメカニズム
$db->update('user', array('name'=> 't5'), array('id'=> 23)); //返回受影响的行数クエリを使用する
SQLを直接使用することができます。
delete($table, $where)PDO を直接使用する Medoo は PDO に基づいているため、PDO インスタンスを直接呼び出すことができます。
PDO インスタンスを取得します:
$db->update('user', array('id'=> 23)); //返回受影响的行数
次に、PDO オブジェクトのすべてのメソッドを使用できるようになります。 $db->has('user', array('id'=> 23)); //记录是否存在$db->count('user', array('id[>]'=> 23)); //统计$db->max('user', 'age', array('gender'=> 1)); //最大值$db->min('user', 'age', array('gender'=> 2)); //最小值$db->avg('user', 'age', array('gender'=> 2)); //平均值$db->sum('user', 'age', array('gender'=> 2)); //求和
例:
$db->action(function($db) { try{ $db->insert("account", [ "name" => "foo", "email" => "bar@abc.com" ]); $db->delete("account", [ "user_id" => 2312 ]); }catch(Exception $e){ // 返回false就会回滚事务 return false; }});pdo トランザクション:
//查询$data = $db->query("SELECT * FROM user")->fetchAll();print_r($data);//删除$db->query("DELETE FROM user where name='t5' ");
DEBUGdebug()
を使用して最終 SQL ステートメントを出力しますselect、get、insert、update などのメソッドの前に debug() メソッドを追加しますSQL ステートメントを出力すると、プログラムは実行を継続しません:
$pdo = $db->pdo;
error()
最後の操作のエラー メッセージを返します
1.PDO::beginTransaction — 启动一个事务2.PDO::commit — 提交一个事务3.PDO::__construct — 创建一个表示数据库连接的 PDO 实例4.PDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE5.PDO::errorInfo — 获取错误信息6.PDO::exec — 执行一条 SQL 语句,并返回受影响的行数7.PDO::getAttribute — 取回一个数据库连接的属性*8.PDO::getAvailableDrivers — 返回一个可用驱动的数组(了解即可)*9.PDO::inTransaction — 检查是否在一个事务内(了解即可)10.PDO::lastInsertId — 返回最后插入行的ID或序列值11.PDO::prepare — 创建SQL的预处理,返回PDOStatement对象12.PDO::query — 用于执行查询SQL语句,返回PDOStatement对象13.PDO::quote — 为sql字串添加单引号14.PDO::rollBack — 回滚一个事务15.PDO::setAttribute — 设置属性
log()
クエリの通常の実行に影響を与えずに、すべての SQL クエリ ステートメントを返します
$stmt = $pdo->query('select * from user limit 2'); //返回一个PDOStatement对象//$row = $stmt->fetch(); //从结果集中获取下一行,用于while循环$rows = $stmt->fetchAll(); //获取所有print_r($rows);
last_query()
log() に似ていますが、最後の SQL クエリステートメントのみを返します。これはクエリの通常の実行には影響しません
$pdo->beginTransaction();//开启事务处理try{ //PDO预处理以及执行语句... $pdo->commit();//提交事务}catch(PDOException $e){ $pdo->rollBack();//事务回滚 //相关错误处理 throw $e;}Eloquent ORM Eloquent ORM は、Laravel フレームワークによって使用される ORM です。 Laravel の Eloquent ORM は、データベースと対話するためのより洗練された ActiveRecord 実装を提供します。 各データベース テーブルはモデル ファイルに対応します。
参考:
1. ガイドブック - Medoohttp://medoo.in/api/new/2. 雄弁なORMノート - 飛虹英〜 - Blog Park
(続く...)

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

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

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

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

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

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

Dreamweaver Mac版
ビジュアル Web 開発ツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
