ホームページ php教程 php手册 PHP中PDO的基础应用实例

PHP中PDO的基础应用实例

Jun 13, 2016 am 09:46 AM
pdo php

PHP开发中,mysql或者mysqli是现在大家使用较多的数据库连接方式。在PHP5中已经开始有PDO支持了,听说在下一个版本PHP6中,PDO将会作为默认的数据库链接工具,不管是真还是假,PDO作为数据库的另一种连接方式在不久的将来也许会很普遍的使用,这里清源就目前掌握的知识来看,将PDO的使用以实例的方式和大家分享一下,文章的部分代码来源于网络。


在使用PDO之前首先要设置PHP.INI文件,使PHP支持PDO,因为PHP5默认是不支持的。在PHP安装目录下找到PHP.INI文件,打开并搜索extension=php_pdo.dll 和 extension=php_pdo_mysql.dll,将前面的分号(;)去掉,重启apache即可。


接下来我们就开始写PHP代码了,首先是连接数据库,看下面的例子:


<?php
define('DB_NAME', 'pdo_test');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
try {
    $DBH = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD);
    $DBH->exec('SET CHARACTER SET '.DB_CHARSET);
    $DBH->exec('SET NAMES '.DB_CHARSET);
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>
ログイン後にコピー


连接成功后,我们需要对数据库中的数据进行增删改查操作,这里主要用到exec和query两个函数。


示例:


<?php
//增加数据
$sql_insert = 'Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,'.time().rand(1,100).','.time().rand(1,100).',\'no\')';
$back = $DBH->exec($sql_insert); //返回 bool 的true or fal
$lastInsertId = $DBH->lastInsertId();
//删除数据
$sql_delete = 'Delete FROM wp_options Where option_id='.$lastInsertId;
$back = $DBH->exec($sql_delete); //返回 bool 的true or fal
$lastInsertId = $DBH->lastInsertId();
//更新数据
$sql_update = 'Update wp_options SET option_name = \''.time().rand(1,100).'\' Where option_id='.$lastInsertId;
$lastUpdateId = $DBH->lastInsertId(); //返回的对应的操作的id
//查询数据
$sql_select = 'Select option_id FROM wp_options orDER BY option_id DESC LIMIT 4 ';
$back = $DBH->query($sql_select); //返回一个对象 这个对象可以用foreach 直接遍历循环 循环的为查询的结果集
$back = $DBH->query($sql_select)->fetch(); //返回一条数据结果 这个对象可以用foreach 直接遍历循环 循环的为查询的结果集
$back = $DBH->query($sql_select)->fetchAll(); //返回一个数组 这个对象可以用foreach 直接遍历循环 循环的为查询的结果集
$back = $DBH->query($sql_select)->fetchColumn(0); //返回一个字段字符串,这个字符串是返回的记录的第一条记录的第一个字段
?>
ログイン後にコピー


到这里,PDO的基本操作基本上结束了。对于一般的企业网站,小型的管理系统基本上能满足了,但是,如果我们开发大型网站或者逻辑较复杂的管理系统,仅仅靠数据的读写是远远不够的,我们可能还需要对数据库的存储过程、事务等对象进行操作,下面我们继续看看用PDO是如何实现的。


对于事务,PDO已经封装好了,我们只需要调用就可以了。


示例:


<?php
try{
    $DBH->beginTransaction();//开启一个事务
    //Sql 执行的内容 ......................
    $DBH->exec($sql_insert); //执行一系列的操作
    $DBH->exec($sql_update);
    $DBH->exec($sql_delete);
    //等等
    $DBH->commit(); //如果正确执行完成 那么确认 commit
} catch(Exception $e) {
    $DBH->rollBack();//如果执行中有错误的情况下  回滚
}
?>
ログイン後にコピー


这里重点说明一下,在使用事务时,一定要使用try..catch语句,当返回错误时事务不会提交。


PDO在执行存储过程时这里还是运用了比较老的方法,因为这一块清源也还没完全搞明白。如果大家有更好的办法可以拿出来共享一下。


看代码:


<?php
$sql_procedure = '
            Create PROCEDURE inout_test(
                IN in_option_id INT,
                OUT out_option_name VARCHAR(255),
                OUT out_option_value TEXT
            )
            BEGIN
                Select option_name INTO out_option_name   FROM wp_options Where option_id = in_option_id;
                Select option_value INTO out_option_value FROM wp_options Where option_id = in_option_id;
            END;
';
try{
    $sql_drop_procedure = 'Drop PROCEDURE inout_test';
    $back = $DBH->exec($sql_procedure);
    $sql_call_procedure = 'CALL inout_test(100,@out_option_name,@out_option_value)';
    $DBH->exec($sql_call_procedure);
    $sql_select_procedure = 'Select @out_option_name,@out_option_value';
    $back = $DBH->query($sql_select_procedure)->fetch();
    $back = $DBH->exec($sql_drop_procedure);
}catch(Exception $e){
    echo $e->getMessage();
}
?>
ログイン後にコピー


另外UncleToo再给大家介绍一点关于PDO预处理方面的知识。预处理机制有很多好处,他可以使sql语句重复使用,而且执行效率比直接执行来的更高,所以,如果我们把PDO的预处理机制用好了,对于程序来说是很不错的。(PS:T不错的PHP Q扣峮:276167802,验证:csl)


看下面这段实例代码:


<?php
$stmt = $DBH->prepare('Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,:option_name,:option_value,\'no\')');
$option_name = $option_value = '';
$stmt->bindParam(':option_name', $option_name); //
$stmt->bindParam(':option_value', $option_value);
                                                                  
// 插入一条数据A
$option_name = 'name'.time();
$option_value = 'value'.time();
$stmt->execute();
                                                                  
// 插入另一条不同的数据B
$option_name = 'name_'.time();
$option_value = 'value_'.time();
$stmt->execute();
                                                                  
$stmt = $DBH->prepare('Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,?,?,\'no\')');
$option_name = $option_value = '';
$stmt->bindParam('1', $option_name); //
$stmt->bindParam('2', $option_value);
                                                                  
// 这里我们还可以插入A数据
$option_name = 'name'.time();
$option_value = 'value'.time();
$stmt->execute();
                                                                  
// 这里我们同样还可以插入B数据
$option_name = 'name_'.time();
$option_value = 'value_'.time();
$stmt->execute();
                                                                  
                                                                  
$stmt = $DBH->prepare("Select * FROM wp_options where option_id = ?");
if ($stmt->execute(array(@$_GET['option_id']))) {
  while (@$row = $stmt->fetch()) {
    print_r($row);
  }
}
?>
ログイン後にコピー


上面介绍的这些都是PDO的基础,基本能满足我们在开发过程中的需要,对于其他功能,比如PDO大对象,错误处理,游标等功能大家可以参考PHP官方手册,这里就不做说明了(其实清源也不会^_^...)

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

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

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

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

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

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

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

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

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHP対その他の言語:比較 PHP対その他の言語:比較 Apr 13, 2025 am 12:19 AM

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

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

See all articles