ホームページ バックエンド開発 PHPチュートリアル PHP データベースの学習: PDO を使用して SQL ステートメントを実行する方法?

PHP データベースの学習: PDO を使用して SQL ステートメントを実行する方法?

Oct 28, 2021 pm 12:05 PM
pdo php

前回の記事では「PHPデータベース学習:PDOを使ってデータベースに接続するには?」をお届けしました。 」では、PHP で PDO を介してデータベースに接続する方法が詳しく説明されています。この記事では、引き続き PDO を使用して PHP で SQL ステートメントを実行する方法を見ていきます。みんなが助けてくれるといいですね!

PHP データベースの学習: PDO を使用して SQL ステートメントを実行する方法?

前回の記事では、PHP が PDO を介してデータベースに接続する方法を学習しました。データベースに接続するには、SQL ステートメントを実行する必要があります。 PDO では、SQL ステートメントを実行する 3 つの方法、つまり exec() メソッド、query() メソッド、プリペアド ステートメント prepare() および # を使用できます。 ##execute() メソッド。それでは、一緒に見てみましょう。

<strong>exec() <span style="font-size: 20px;"></span></strong>メソッド

INSERTを実行するとき、UPDATE と DELETE、および結果セットを返す必要のないその他の SQL ステートメントでは、PDO オブジェクトで

exec() メソッドを使用できます。このメソッドを使用して実行が成功すると、返された結果が影響を受けます。

exec() メソッドの行数、構文形式は次のとおりです:

PDO::exec(string $sql)
ログイン後にコピー

注意してください:

  • $ sql は、実行される SQL ステートメントです。

  • exec() このメソッドは、SELECT クエリ ステートメントから対応する結果を取得しません。

次に、例を使用してデータベースにデータを追加してみます。例は次のとおりです:


<?php
    $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try{
        $pdo = new PDO($dsn,$user,$pwd);
        $sql = "insert into user(name,age,sex) values(&#39;壹壹&#39;,&#39;21&#39;,&#39;男&#39;)";
        $res = $pdo -> exec($sql);
        if($res) echo &#39;成功添加 &#39;.$res.&#39; 条数据!&#39;;
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e -> getMessage();
    }
?>
ログイン後にコピー

出力結果:


PHP データベースの学習: PDO を使用して SQL ステートメントを実行する方法?

上記の例からわかるように、exec() メソッドを通じてデータベースにデータを正常に追加しました。返された結果は、影響を受けたデータの数です。行。オブジェクトを返したい場合は、query() メソッドを使用できます。次に、SQL ステートメントを実行する別の方法、

query() メソッドを見てみましょう。

<strong>query() <span style="max-width:90%"></span></strong>メソッド

上記の例では

exec() メソッドは、結果セットを返す必要のないこれらのステートメント情報を返すことができます。結果セットを返す必要がある SELECT クエリ ステートメントを実行する場合は、query() ステートメントを渡す必要があります。このメソッドが正常に実行されると、悔い改めた本国は PDOStatement オブジェクトになります。

query() メソッドを使用し、取得したデータ行の合計数を知りたい場合は、PDOStatement オブジェクトの

rowCount() メソッドを使用して取得できます。 。

query() メソッドの構文形式は次のとおりです。


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() メソッドを呼び出すことと同じです。

次に、query() メソッドを使用して、前に追加したデータをクエリします。例は次のとおりです:


<?php
    $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try{
        $pdo = new PDO($dsn,$user,$pwd);
        $sql = "SELECT * FROM user WHERE name=&#39;壹壹&#39;";
        $res = $pdo -> query($sql,PDO::FETCH_ASSOC);
        print_r($res);
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e -> getMessage();
    }
?>
ログイン後にコピー

出力結果:


PHP データベースの学習: PDO を使用して SQL ステートメントを実行する方法?

query() メソッドと exec() メソッドの使用には、次の注意点があります。

    # query() と exec() は両方ともすべての SQL ステートメントを実行できますが、戻り値は異なります;
  • query() は exec() のすべての関数を実現できます;
  • select ステートメントが exec() に適用されると、常に 0 が返されます;
  • クエリの特定の結果を確認したい場合場合は、foreach ステートメントを通じてループ出力を完了できます。

prepare()<strong><span style="font-size: 20px;"></span></strong> メソッドと execute() メソッド #異なるパラメータを繰り返し渡す必要がある場合、つまり、同じクエリを複数回実行する必要がある場合、準備されたステートメントを使用すると実装がより効率的になります。ステートメントを実行するには、PDO オブジェクトの prepare() メソッドを使用して実行するクエリを準備し、次に PDOStatement オブジェクトの

execute()

メソッドを使用してクエリを実行する必要があります。 。次に、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> 次の点に注意してください:

$statement
    は、ターゲット データベースに対して有効な SQL ステートメント テンプレートである必要があります。
  • $driver_options
  • は、配列のオプションのパラメータであるオプションのパラメータを表します。型であり、返された PDOStatement オブジェクトのプロパティを設定するための 1 つ以上のキーと値のペアが含まれています。
  • execute() メソッドの構文形式は次のとおりです。

    PDOStatement::execute([array $input_parameters])
    ログイン後にコピー
  • 注意すべき点は次のとおりです。
  • 参数 $input_parameters 为一个元素个数和将被执行的 SQL 语句中绑定的参数一样多的数组。

  • SQL 语句模板中可以包含零个或多个参数占位标记,格式可以是命名(:name)或问号(?)的形式,当它执行时将用真实数据取代。

  • 在同一个 SQL 语句里,命名和问号形式不能同时使用,只能选择其中一种参数形式。如果使用命名形式的占位标记,那么标记的命名必须是唯一的。

接下来我们看一下使用命名形式的参数占位符,查询指定的 SQL 语句,示例如下:

<?php
    $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    try{
        $pdo = new PDO($dsn,$user,$pwd);
        $sql = "SELECT name,age,sex FROM user WHERE age = :age";
        $sth = $pdo -> prepare($sql);
        $sth -> execute([&#39;:age&#39;=>11]);
        $res1 = $sth -> fetchAll();
        $sth -> execute(array(&#39;:age&#39;=>14));
        $res2 = $sth -> fetchAll();
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;
        print_r($res1);
        print_r($res2);
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e -> getMessage();
    }
?>
ログイン後にコピー

输出结果:

PHP データベースの学習: PDO を使用して SQL ステートメントを実行する方法?

上述示例是使用命名形式的参数占位符,查询指定的 SQL 语句,接下来我们看一下使用问号形式的参数占位符,查询指定的 SQL 语句。示例如下:

<?php
    $dsn  = &#39;mysql:host=127.0.0.1;dbname=test&#39;;
    $user = &#39;root&#39;;
    $pwd  = &#39;root&#39;;
    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,&#39;男&#39;]);
        $res1 = $sth -> fetchAll();
        $sth -> execute(array(11,&#39;女&#39;));
        $res2 = $sth -> fetchAll();
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;
        print_r($res1);
        print_r($res2);
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e -> getMessage();
    }
?>
ログイン後にコピー

输出结果:

PHP データベースの学習: PDO を使用して SQL ステートメントを実行する方法?

由此我们便通过使用问号形式的参数占位符,查询指定的 SQL 语句。

大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

以上がPHP データベースの学習: PDO を使用して SQL ステートメントを実行する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

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

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

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

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

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

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

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

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

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

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

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

See all articles