ホームページ バックエンド開発 PHPチュートリアル Yii 11.17 データベース関連の操作説明

Yii 11.17 データベース関連の操作説明

Apr 28, 2018 am 11:06 AM
データベース

この記事では、Yii 11.17 データベースに関連する操作手順を紹介します。必要な友達はそれを参照してください。例:

$result = array(
    'id'=>null,
    'val'=>0
);
$row1 = Yii::app()->db->createCommand()->insert('test1', $result);
$id   = Yii::app()->db->getLastInsertID();
$row2 = Yii::app()->db->createCommand()->update('test1', array('val'=>$id) , 'id=:id',array(':id'=>$id));
echo $id;
exit;
ログイン後にコピー

#1。 try...catch を使用すると、スローされる可能性のある例外をキャプチャできます

#$connection=new CDbConnection($dsn,$username,$password);

# DSN 形式
# SQLite: sqlite:/path/to/dbfile
# MySQL: mysql :host=localhost;dbname=testdb
# PostgreSQL: pgsql:host=localhost;port=5432;dbname=testdb
# SQL Server: mssql:host=localhost;dbname=testdb
# Oracle: oci:dbname= //localhost :1521/testdb
# 構成ファイル内のエイリアスを変更します

array(
    'components'=>array(
        'db'=>array(
            'class'=>'CDbConnection',
            'connectionString'=>'mysql:host=localhost;dbname=testdb',
            'username'=>'root',
            'password'=>'password',
            'emulatePrepare'=>true,  // needed by some MySQL installations
        ),
    ),
)
ログイン後にコピー

# 次に、このメソッドを使用して接続を確立すると、

$connection = Yii::app()->db
ログイン後にコピー

# を通じてデータベース接続にアクセスできるようになります。特に

# CDbConnection::autoConnect を false に設定しない限り、自動的にアクティブ化されます。

# このようにして、この単一の DB 接続をコード内の多くの場所で共有できます。
# そうでない場合は、明示的に接続を確立する必要がある場合があります:
# $connection=new CDbConnection($dsn,$username,$password);

$connection->active=true;  # 建立链接之后active为true;
ログイン後にコピー
$connection->active=false;    # 关闭连接
ログイン後にコピー

#SQL の実行

$command=$connection->createCommand($sql);
ログイン後にコピー

#SQL の変更

$command- >text = $newSQL;

######################################## ## #############
#execute() メソッドは、INSERT、UPDATE、DELETE を実行するために使用されます。
成功した場合は、この実行によって影響を受けた行数が返されます。
#query() メソッドは、SELECT などの複数行のデータを返す SQL ステートメントを実行します。
#成功した場合は、結果のデータ行を走査できる CDbDataReader インスタンスが返されます。
#簡単にするために、(Yii) はクエリ結果を直接返す一連の queryXXX() メソッドも実装します
#SQL エラーが発生した場合、例外がスローされます。 .

$rowCount   =    $command->execute();        # 执行无查询 SQL
$dataReader =    $command->query();          # 执行一个 SQL 查询
$rows       =    $command->queryAll();       # 查询并返回结果中的所有行
$row        =    $command->queryRow();       # 查询并返回结果中的第一行
$column     =    $command->queryColumn();    # 查询并返回结果中的第一列
$value      =    $command->queryScalar();    # 查询并返回结果中第一行的第一个字段
ログイン後にコピー

############################################ ## ########

#クエリ結果を取得します

#CDbDataReader を生成した後
#CDbDataReader::read() を繰り返し呼び出します
#foreach 言語構造で CDbDataReader を使用することもできます
####例 # ###

$dataReader = $command->query();
ログイン後にコピー

#メソッド 1 false が返されるまで read() を繰り返し呼び出します

while
( ($row = $dataReader->read()) !== false) { ... }# メソッド2 foreach を使用してデータ内の各行を走査します
foreach
($dataReader as $row) { ... }#Method 3 すべての行を一度に配列に抽出します$rows = $dataReader->readAll() ;
#注意:
#すべての queryXXX() メソッドはデータを直接返します
#query() はデータを直接返しません。CDbDataReader のインスタンスを返します
#トランザクションを使用します

$transaction= $connection->beginTransaction();
try
{
    $connection->createCommand($sql1)->execute();
    $connection->createCommand($sql2)->execute();
    #其他
    $transaction->commit();
}
catch(Exception $e) # 如果有一条查询失败,则会抛出异常
{
    $transaction->rollBack(); #回滚
}
ログイン後にコピー

######### ## ##########################################

# 前処理 (パラメータ バインディング) ) インジェクションを回避し、反復実行の効率を向上させます

#Placeholder は、名前を付けることも (一意のマークとして表示される)、名前を付けないこともできます (疑問符として表示されます)。プレースホルダーは実際のパラメーターに置き換えられます。
#CDbCommand::bindParam() または CDbCommand::bindValue() を呼び出して、これらのプレースホルダーを実際のパラメーターに置き換えます。
#これらのパラメーターは引用符で囲む必要はありません。SQL ステートメントが実行される前に、基礎となるデータベース ドライバーがこれを処理する必要があります。
#例
#2 つのプレースホルダー「:username」と「:email」を含む SQL

$sql="INSERT INTO tbl_user (username, email) VALUES(:username,:email)";
$command = $connection->createCommand($sql);
ログイン後にコピー

#プレースホルダー「:username」を実際のユーザー名に置き換えます

$command->bindParam(":username", $username, PDO::PARAM_STR);
ログイン後にコピー

#実際のユーザー名を置き換える 電子メールはプレースホルダー「:」を置き換えますemail"

$command->bindParam(":email",$email,PDO::PARAM_STR);
$command->execute();
ログイン後にコピー

#同じロジックを繰り返し実行する場合

#新しいパラメータsetを使用して別の行を挿入する


$command->bindParam(":username",$username2,PDO::PARAM_STR);
$command->bindParam(":email",$email2,PDO::PARAM_STR);
$command->execute();
ログイン後にコピー

#bindParam()とbindValue()は非常に似ています。

#唯一の違いは、前者はパラメーターのバインドに PHP 変数を使用するのに対し、

#後者は値を使用することです。メモリ内に大きなデータ ブロックを持つパラメータの場合、パフォーマンス上の理由から、前者を最初に使用する必要があります。
############################################ ## ######
#列をバインドする

$sql="SELECT username, email FROM tbl_user";
$dataReader=$connection->createCommand($sql)->query();
ログイン後にコピー

#$username 変数を使用して最初の列 (ユーザー名) をバインドします

$dataReader->bindColumn(1,$username);
ログイン後にコピー

#$email 変数を使用して 2 番目の列 (電子メール) をバインドします

$dataReader->bindColumn(2,$email);
ログイン後にコピー

while

($dataReader->read()!==false){ #$username と $email には現在の行にユーザー名とメールアドレスが含まれます
#毎回 2 つの変数に値を代入する必要はありません時間
}
############################################# # ########
#テーブル プレフィックスを使用する
#CDbConnection::tablePrefix 属性を目的のテーブル プレフィックスに設定します。

array(
    'components'=>array(
        'db'=>array(
            'class'=>'CDbConnection',
            'connectionString'=>'mysql:host=localhost;dbname=testdb',
            'username'=>'root',
            'password'=>'password',
            'emulatePrepare'=>true,  // needed by some MySQL installations
            'tablePrefix'=>"表前缀_"
        ),
    ),
)
ログイン後にコピー
$sql='SELECT * FROM {{user}}';
$users=$connection->createCommand($sql)->queryAll();
ログイン後にコピー

#####################

$user = Yii::app()->db->createCommand()
        ->select('username, password')
        ->from('tbl_user')
        ->where('id=:id', array(':id'=>1))
        ->queryRow();
ログイン後にコピー

where() メソッド (v1.1.6 以降で利用可能)

public CDbCommand where(mixed $conditions, array $params=array())

$conditions WHERE 部分に配置される混合条件。
$params array このクエリにバインドされたパラメータ (name=>value)
{return} CDbCommand このコマンドオブジェクト自体を返します
クエリの WHERE を設定します。
このメソッドには、クエリにバインドする値を指定する $conditions パラメーターと $params パラメーターが必要です。


$conditions パラメーターは文字列 (「id=1」など) または配列にすることができます。

後者の場合は、array(operator, operand1, operand2, ...) の形式にする必要があります。演算子は次のいずれかになります。使用可能なオペランドは、対応する演算子によって異なります:
および: 操作番号AND を使用して接続する必要があります。
例:
array('and', 'id=1', 'id=2')

'id=1 AND id=2' を生成します。オペランドが配列の場合、ここで説明するのと同じルールを使用して文字列に変換されます。例:
array('and', 'type=1', array('or', 'id=1', 'id=2'))

'type=1 AND (id=1 OR id) を生成します= 2)'
このメソッドは引用符やエスケープを行いません。
or: and 演算子と似ていますが、オペランドが OR を使用して接続される点が異なります。
in: オペランド 1 は列または DB 式である必要があり、オペランド 2 は対応する列または DB 式の値が入る範囲を示す配列である必要があります。
例:
array('in', 'id', array(1,2,3))
'id IN (1,2,3)' を生成します
このメソッドは、列名と変換を正しく参照します値の範囲を意味します。
not in: in と似ていますが、条件を生成するときに IN が NOT IN に置き換えられる点が異なります。
like: オペランド 1 は列または DB 式である必要があり、オペランド 2 は like である必要がある列または DB 式の値を示す文字列または配列です。
例:
array('like', 'name', '%tester%')
は、
"name LIKE '%tester%'"を生成します。
値の範囲が配列として指定される場合、複数のLIKE述語が生成されます。 AND を使用して生成および結合します。
例:
array('like', 'name', array('%test%', '%sample%'))

"name LIKE '%test%' AND name LIKE '%sample%' を生成します"
このメソッドは、列名と範囲のエスケープされた値を正しく引用符で囲みます。
not like: like と似ていますが、条件を生成するときに LIKE の代わりに NOT LIKE が使用される点が異なります。
or like: like と似ていますが、LIKE 述語を接続するために OR が使用される点が異なります。
or not like: not like と似ていますが、NOT LIKE 述語を接続するために OR が使用される点が異なります。

関連する推奨事項:

yii フレームワークの詳細

Yii マルチアプリケーション マルチモジュール

Yii2 構成の基本概念

以上がYii 11.17 データベース関連の操作説明の詳細内容です。詳細については、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衣類リムーバー

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)

Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか? Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか? Mar 27, 2024 pm 09:39 PM

Go 言語は、効率的かつ簡潔で習得が容易なプログラミング言語であり、同時プログラミングやネットワーク プログラミングに優れているため、開発者に好まれています。実際の開発ではデータベースの操作が欠かせませんが、今回はGo言語を使ってデータベースの追加・削除・変更・クエリ操作を実装する方法を紹介します。 Go 言語では、データベースを操作するために通常、よく使用される SQL パッケージや gorm などのサードパーティ ライブラリを使用します。ここでは SQL パッケージを例として、データベースの追加、削除、変更、クエリ操作を実装する方法を紹介します。 MySQL データベースを使用していると仮定します。

iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます Jul 18, 2024 am 05:48 AM

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

Hibernate はポリモーフィック マッピングをどのように実装しますか? Hibernate はポリモーフィック マッピングをどのように実装しますか? Apr 17, 2024 pm 12:09 PM

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル Jun 04, 2024 pm 01:42 PM

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

PHP でデータベース接続エラーを処理する方法 PHP でデータベース接続エラーを処理する方法 Jun 05, 2024 pm 02:16 PM

PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

HTML がデータベースを読み取る方法の詳細な分析 HTML がデータベースを読み取る方法の詳細な分析 Apr 09, 2024 pm 12:36 PM

HTML はデータベースを直接読み取ることはできませんが、JavaScript と AJAX を通じて実現できます。この手順には、データベース接続の確立、クエリの送信、応答の処理、ページの更新が含まれます。この記事では、JavaScript、AJAX、および PHP を使用して MySQL データベースからデータを読み取る実践的な例を示し、クエリ結果を HTML ページに動的に表示する方法を示します。この例では、XMLHttpRequest を使用してデータベース接続を確立し、クエリを送信して応答を処理することで、ページ要素にデータを埋め込み、データベースを読み取る HTML の機能を実現します。

PHP を使用してデータベース内の中国語の文字化けを処理するためのヒントと実践 PHP を使用してデータベース内の中国語の文字化けを処理するためのヒントと実践 Mar 27, 2024 pm 05:21 PM

PHP は Web サイト開発で広く使用されているバックエンド プログラミング言語であり、強力なデータベース操作機能を備えており、MySQL などのデータベースとの対話によく使用されます。ただし、中国語の文字エンコーディングは複雑であるため、データベース内で中国語の文字化けを処理するときに問題が発生することがよくあります。この記事では、文字化けの一般的な原因、解決策、具体的なコード例を含め、データベース内の中国語の文字化けを処理するための PHP のスキルと実践方法を紹介します。文字化けの一般的な原因は、データベースの文字セット設定が正しくないことです。データベースの作成時に、utf8 や u などの正しい文字セットを選択する必要があります。

Golangを使用してリモートデータベースに接続するにはどうすればよいですか? Golangを使用してリモートデータベースに接続するにはどうすればよいですか? Jun 01, 2024 pm 08:31 PM

Go 標準ライブラリのデータベース/SQL パッケージを通じて、MySQL、PostgreSQL、SQLite などのリモート データベースに接続できます。データベース接続情報を含む接続文字列を作成します。 sql.Open() 関数を使用してデータベース接続を開きます。 SQL クエリや挿入操作などのデータベース操作を実行します。 defer を使用してデータベース接続を閉じ、リソースを解放します。

See all articles