PHP データベースの学習: PDO を使用して SQL ステートメントを実行する方法?
前回の記事では「PHPデータベース学習:PDOを使ってデータベースに接続するには?」をお届けしました。 」では、PHP で PDO を介してデータベースに接続する方法が詳しく説明されています。この記事では、引き続き PDO を使用して PHP で SQL ステートメントを実行する方法を見ていきます。みんなが助けてくれるといいですね!
前回の記事では、PHP が PDO を介してデータベースに接続する方法を学習しました。データベースに接続するには、SQL ステートメントを実行する必要があります。 PDO では、SQL ステートメントを実行する 3 つの方法、つまり exec()
メソッド、query()
メソッド、プリペアド ステートメント prepare()
および # を使用できます。 ##execute() メソッド。それでは、一緒に見てみましょう。
<strong>exec() <span style="font-size: 20px;"></span></strong>
メソッド
exec() メソッドを使用できます。このメソッドを使用して実行が成功すると、返された結果が影響を受けます。
PDO::exec(string $sql)
$ sql
は、実行される SQL ステートメントです。
exec()
このメソッドは、SELECT クエリ ステートメントから対応する結果を取得しません。
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = "insert into user(name,age,sex) values('壹壹','21','男')"; $res = $pdo -> exec($sql); if($res) echo '成功添加 '.$res.' 条数据!'; }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>
query() メソッドを見てみましょう。
<strong>query() <span style="max-width:90%"></span></strong>
メソッド
exec() メソッドは、結果セットを返す必要のないこれらのステートメント情報を返すことができます。結果セットを返す必要がある SELECT クエリ ステートメントを実行する場合は、query() ステートメントを渡す必要があります。このメソッドが正常に実行されると、悔い改めた本国は
PDOStatement オブジェクトになります。
rowCount() メソッドを使用して取得できます。 。
PDO::query(string $sql) PDO::query(string $sql, int $PDO::FETCH_COLUMN, int $colno) PDO::query(string $sql, int $PDO::FETCH_CLASS, string $classname, array $ctorargs) PDO::query(string $sql, int $PDO::FETCH_INTO, object $object)
$sql です。 は必須です 実行された SQL ステートメント。残りのパラメーターは、ステートメントのデフォルトのフェッチ モードを設定するために使用されます。これは、結果オブジェクトの PDOStatement::setFetchMode() メソッドを呼び出すことと同じです。
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = "SELECT * FROM user WHERE name='壹壹'"; $res = $pdo -> query($sql,PDO::FETCH_ASSOC); print_r($res); }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>
query() メソッドと
exec() メソッドの使用には、次の注意点があります。
- # query() と exec() は両方ともすべての SQL ステートメントを実行できますが、戻り値は異なります;
- query() は exec() のすべての関数を実現できます;
- select ステートメントが exec() に適用されると、常に 0 が返されます;
- クエリの特定の結果を確認したい場合場合は、foreach ステートメントを通じてループ出力を完了できます。
prepare()<strong><span style="font-size: 20px;"></span></strong> メソッドと
execute() メソッド #異なるパラメータを繰り返し渡す必要がある場合、つまり、同じクエリを複数回実行する必要がある場合、準備されたステートメントを使用すると実装がより効率的になります。ステートメントを実行するには、PDO オブジェクトの prepare() メソッドを使用して実行するクエリを準備し、次に PDOStatement オブジェクトの
メソッドを使用してクエリを実行する必要があります。 。次に、prepare()
メソッドと execute()
メソッドを見てみましょう。 prepare() メソッドの構文形式は次のとおりです:
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>PDO::prepare(string $statement[, array $driver_options = array()])</pre><div class="contentsignin">ログイン後にコピー</div></div>
次の点に注意してください:
- は、ターゲット データベースに対して有効な SQL ステートメント テンプレートである必要があります。
$driver_options は、配列のオプションのパラメータであるオプションのパラメータを表します。型であり、返された PDOStatement オブジェクトのプロパティを設定するための 1 つ以上のキーと値のペアが含まれています。 execute() メソッドの構文形式は次のとおりです。
PDOStatement::execute([array $input_parameters])
ログイン後にコピー 注意すべき点は次のとおりです。
参数
$input_parameters
为一个元素个数和将被执行的 SQL 语句中绑定的参数一样多的数组。SQL 语句模板中可以包含零个或多个参数占位标记,格式可以是命名(:name)或问号(?)的形式,当它执行时将用真实数据取代。
在同一个 SQL 语句里,命名和问号形式不能同时使用,只能选择其中一种参数形式。如果使用命名形式的占位标记,那么标记的命名必须是唯一的。
接下来我们看一下使用命名形式的参数占位符,查询指定的 SQL 语句,示例如下:
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = "SELECT name,age,sex FROM user WHERE age = :age"; $sth = $pdo -> prepare($sql); $sth -> execute([':age'=>11]); $res1 = $sth -> fetchAll(); $sth -> execute(array(':age'=>14)); $res2 = $sth -> fetchAll(); echo '<pre class="brush:php;toolbar:false">'; print_r($res1); print_r($res2); }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>
输出结果:
上述示例是使用命名形式的参数占位符,查询指定的 SQL 语句,接下来我们看一下使用问号形式的参数占位符,查询指定的 SQL 语句。示例如下:
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = "SELECT name,age,sex FROM user WHERE age = ? AND sex = ?"; $sth = $pdo -> prepare($sql); $sth -> execute([12,'男']); $res1 = $sth -> fetchAll(); $sth -> execute(array(11,'女')); $res2 = $sth -> fetchAll(); echo '<pre class="brush:php;toolbar:false">'; print_r($res1); print_r($res2); }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>
输出结果:
由此我们便通过使用问号形式的参数占位符,查询指定的 SQL 语句。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
以上がPHP データベースの学習: PDO を使用して SQL ステートメントを実行する方法?の詳細内容です。詳細については、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)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます
