PDO类的封装
PDO类的封装
1. PDO类.rar
2. PHP代码
<?php /** * Created by tudou. * Date: 13-2-4 * Time: 下午9:57 */ /** 其他未实现的 1、绑定列到php变量请使用 $db->statement->bindColumn(1,$name); */ class pdo_class { private $pdo = null; public $statement = null; private $is_addsla = false; public $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES ", ); public function __construct($host,$user="root",$pass="",$dbname="",$persistent=false,$charset="utf8"){ $this->options[PDO::MYSQL_ATTR_INIT_COMMAND] .= $charset; if($persistent){ $this->options[PDO::ATTR_PERSISTENT] = true; } $dsn = "mysql:host={$host};dbname={$dbname}"; $this->pdo = new PDO($dsn,$user,$pass,$this->options); } /** 全局属性设置,包括:列名格式和错误提示类型 可以使用数字也能直接使用参数 */ public function setAttr($param,$val=''){ if(is_array($param)){ foreach($param as $key=>$val){ $this->pdo->setAttribute($key,$val); } }else{ if($val!=''){ $this->pdo->setAttribute($param,$val); }else{ return false; } } } /** 生成一个编译好的sql语句模版 你可以使用 ? :name 的形式 返回一个statement对象 */ public function prepare($sql=""){ if($sql==""){ return false; } $this->statement = $this->pdo->prepare($sql); return $this->statement; } /** 执行Sql语句,一般用于 增、删、更新或者设置 返回影响的行数 */ public function exec($sql){ if($sql==""){ return false; } try{ return $this->pdo->exec($sql); }catch(Exception $e){ return $e->getMessage(); } } /** 执行有返回值的查询,返回PDOStatement 可以通过链式操作,可以通过这个类封装的操作获取数据 */ public function query($sql){ if($sql=""){ return false; } $this->statement = $this->pdo->query($sql); return $this->statement; } /** 开启事务 */ public function beginTA(){ return $this->pdo->beginTransaction(); } /** 提交事务 */ public function commit(){ return $this->pdo->commit(); } /** 事务回滚 */ public function rollBack(){ return $this->pdo->rollBack(); } public function lastInertId(){ return $db->lastInsertId(); } //** PDOStatement 类操作封装 **// /** 让模版执行SQL语句,1、执行编译好的 2、在执行时编译 */ public function execute($param=""){ if(is_array($param)){ try{ return $this->statement->execute($param); }catch (Exception $e){ //return $this->errorInfo(); return $e->getMessage(); } }else{ try{ return $this->statement->execute(); }catch(Exception $e){ /* 返回的错误信息格式 [0] => 42S22 [1] => 1054 [2] => Unknown column 'col' in 'field list' return $this->errorInfo(); */ return $e->getMessage(); } } } /** 参数1说明: PDO::FETCH_BOTH 也是默认的,两者都有(索引,关联) PDO::FETCH_ASSOC 关联数组 PDO::FETCH_NUM 索引 PDO::FETCH_OBJ 对象 PDO::FETCH_LAZY 对象 会附带queryString查询SQL语句 PDO::FETCH_BOUND 如果设置了bindColumn,则使用该参数 */ public function fetch($fetch_style=PDO::FETCH_BOTH){ if(is_object($this->statement)){ return $this->statement->fetch($fetch_style); }else{ return false; } } /** 参数1说明: PDO::FETCH_BOTH 也是默认的,两者都有(索引,关联) PDO::FETCH_ASSOC 关联数组 PDO::FETCH_NUM 索引 PDO::FETCH_OBJ 对象 PDO::FETCH_COLUMN 指定列 参数2可以指定要获取的列 PDO::FETCH_CLASS 指定自己定义的类 PDO::FETCH_FUNC 自定义类 处理返回的数据 PDO_FETCH_BOUND 如果你需要设置bindColumn,则使用该参数 参数2说明: 给定要处理这个结果的类或函数 */ public function fetchAll($fetch_style=PDO::FETCH_BOTH,$handle=''){ if($handle!=''){ return $this->statement->fetchAll($fetch_style,$handle); }else{ return $this->statement->fetchAll($fetch_style); } } /** 以对象形式返回 结果 跟fetch(PDO::FETCH_OBJ)一样 */ public function fetchObject($class_name){ if($clss_name!=''){ return $this->statement->fetchObject($class_name); }else{ return $this->statement->fetchObject(); } } /** public function bindColumn($array=array(),$type=EXTR_OVERWRITE){ if(count($array)>0){ extract($array,$type); } //$this->statement->bindColumn() } */ /** 以引用的方式绑定变量到占位符(可以只执行一次prepare,执行多次bindParam达到重复使用的效果) */ public function bindParam($parameter,$variable,$data_type=PDO::PARAM_STR,$length=6){ return $this->statement->bindParam($parameter,$variable,$data_type,$length); } /** 返回statement记录集的行数 */ public function rowCount(){ return $this->statement->rowCount(); } public function count(){ return $this->statement->rowCount(); } /** 关闭编译的模版 */ public function close(){ return $this->statement->closeCursor(); } public function closeCursor(){ return $this->statement->closeCursor(); } /** 返回错误信息也包括错误号 */ private function errorInfo(){ return $this->statement->errorInfo(); } /** 返回错误号 */ private function errorCode(){ return $this->statement->errorCode(); } //简化操作 public function insert($table,$data){ if(!is_array($data)){ return false; } $cols = array(); $vals = array(); foreach($data as $key=>$val){ $cols[]=$key; $vals[]="'".$this->addsla($val)."'"; } $sql = "INSERT INTO {$table} ("; $sql .= implode(",",$cols).") VALUES ("; $sql .= implode(",",$vals).")"; return $this->exec($sql); } public function update($table,$data,$where=""){ if(!is_array($data)){ return false; } $set = array(); foreach($data as $key=>$val){ $set[] = $key."='".trim($this->addsla($val))."'"; } $sql = "UPDATE {$table} SET "; $sql .= implode(",",$set); $sql .= " WHERE ".$where; return $this->exec($sql); } public function delete($table,$where=""){ $sql = "DELETE FROM {$table} WHERE ".$where; return $this->exec($sql); } private function addsla($data){ if($this->is_addsla){ return trim(addslashes($data)); } return $data; } }
以上就是PDO类的封装的内容,更多相关内容请关注PHP中文网(www.php.cn)!

ホット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)

ホットトピック











4月17日の当サイトのニュースによると、TrendForceは最近、Nvidiaの新しいBlackwellプラットフォーム製品に対する需要は強気で、2024年にはTSMCのCoWoSパッケージング総生産能力が150%以上増加すると予想されるレポートを発表した。 NVIDIA Blackwell の新しいプラットフォーム製品には、B シリーズ GPU と、NVIDIA 独自の GraceArm CPU を統合する GB200 アクセラレータ カードが含まれます。 TrendForce は、サプライチェーンが現在 GB200 について非常に楽観的であることを確認しており、2025 年の出荷台数は 100 万台を超え、Nvidia のハイエンド GPU の 40 ~ 50% を占めると予想されています。 Nvidiaは今年下半期にGB200やB100などの製品を提供する予定だが、上流のウェーハパッケージングではさらに複雑な製品を採用する必要がある。

このWebサイトは7月9日、AMD Zen5アーキテクチャの「Strix」シリーズプロセッサには2つのパッケージングソリューションがあり、小型のStrixPointはFP8パッケージを使用し、StrixHaloはFP11パッケージを使用すると報じた。出典: videocardz 出典 @Olrak29_ 最新の事実は、StrixHalo の FP11 パッケージ サイズが 37.5mm*45mm (1687 平方ミリメートル) であり、これは Intel の AlderLake および RaptorLake CPU の LGA-1700 パッケージ サイズと同じであるということです。 AMD の最新の Phoenix APU は、サイズ 25*40mm の FP8 パッケージング ソリューションを使用しています。これは、StrixHalo の F

PHP のカプセル化テクノロジとアプリケーションのカプセル化は、オブジェクト指向プログラミングにおける重要な概念であり、外部プログラムに統一されたアクセス インターフェイスを提供するために、データとデータに対する操作を一緒にカプセル化することを指します。 PHP では、アクセス制御修飾子とクラス定義を通じてカプセル化を実現できます。この記事では、PHP のカプセル化テクノロジとそのアプリケーション シナリオを紹介し、いくつかの具体的なコード例を示します。 1. カプセル化されたアクセス制御修飾子 PHP では、カプセル化は主にアクセス制御修飾子によって実現されます。 PHP には 3 つのアクセス制御修飾子が用意されています。

Axios のカプセル化と Vue の一般的なメソッドの紹介 Axios は Promise をベースにした HTTP ライブラリであり、可読性、使いやすさ、拡張性が優れていることが利点です。人気のあるフロントエンド フレームワークとして、Vue は Axios の完全なサポートも提供します。この記事では、Vue で Axios をカプセル化する方法と、Axios でよく使用されるメソッドをいくつか紹介します。 1. Axios のカプセル化 開発プロセス中、多くの場合、次のような Axios のカスタマイズされたカプセル化を実行する必要があります。

コードをカプセル化することにより、C++ 関数は GUI 開発効率を向上させることができます。 コードのカプセル化: 関数はコードを独立した単位にグループ化し、コードの理解と保守を容易にします。再利用性: 関数はアプリケーション間で再利用できる共通の機能を作成し、重複やエラーを削減します。簡潔なコード: カプセル化されたコードにより、メイン ロジックが簡潔になり、読みやすく、デバッグしやすくなります。

Go 言語でカプセル化と継承を実装する方法 カプセル化と継承は、オブジェクト指向プログラミングにおける 2 つの重要な概念であり、コードをよりモジュール化して保守しやすくし、コードの再利用にも便利です。この記事では、Go 言語でカプセル化と継承を実装する方法と、対応するコード例を紹介します。カプセル化 カプセル化とは、データと関数をカプセル化し、実装の詳細を隠し、外部使用に必要なインターフェイスのみを公開することです。 Go 言語では、カプセル化はエクスポートされた識別子とエクスポートされていない識別子によって実現されます。大文字の識別子は他のパッケージからアクセスできます

このウェブサイトのニュースによると、経済日報は本日(7月11日)、フォックスコングループが、現在主流のパネルレベルファンアウトパッケージング(FOPLP)半導体ソリューションに焦点を当て、先進的なパッケージング分野に参入したと報じた。 1. 子会社のInnoluxに続き、Foxconn Groupが投資するシャープも日本のパネルレベルのファンアウトパッケージング分野への参入を発表し、2026年に生産開始される予定である。 Foxconn Group自体はAI分野で十分な影響力を持っており、先進的なパッケージングにおける欠点を補うことで、将来的により多くのAI製品の受注を促進する「ワンストップ」サービスを提供できるとしている。このウェブサイトの公開情報によると、フォックスコングループは現在シャープ株の10.5%を保有しており、現段階では保有を増減させる予定はなく、保有を維持すると述べている。

Python は高級プログラミング言語として、データ分析、機械学習、Web 開発などの分野で広く使用されています。ただし、コードのサイズが拡大し続けるにつれて、Python プログラムのスケーラビリティの問題が徐々に明らかになります。スケーラビリティが低いというエラーは、Python プログラムが特定の状況下で要件の変化にうまく適応できず、大規模なデータを処理できないため、プログラムのパフォーマンスが低下することを意味します。依存関係が多すぎること、コード構造が貧弱であること、ドキュメントが不足していることなどはすべて、Python プログラムにおけるスケーラビリティの低下の原因となります。
