ホームページ バックエンド開発 PHPチュートリアル thinkPHP データベースでの追加、削除、変更、クエリ操作

thinkPHP データベースでの追加、削除、変更、クエリ操作

Jun 07, 2018 pm 03:22 PM
thinkphp 追加、削除、変更、確認 データベース

この記事では主に thinkPHP データベースの追加、削除、変更、クエリの操作方法を紹介し、一般的に使用されるデータベース操作機能と thinkPHP の関連使用スキルを例の形式で詳細に分析します。以下

この記事の例では、thinkPHP データベースの追加、削除、変更、確認の操作方法を説明します。参考までに皆さんと共有してください。詳細は次のとおりです。

thinkphp はデータベースの追加、削除、変更、クエリをカプセル化し、使いやすくしていますが、必ずしも柔軟性があるわけではありません。

SQL を記述するだけで SQL を実行できるので、カプセル化で使用できます。

1. 元の

$Model = new Model(); // 实例化一个model对象 没有对应任何数据表
$insert_sql = "INSERT INTO sh_wxuser_collection (user_id,store_id,good_id,addtime) VALUES('".$user_id."','".$store_id."','".$good_id."','".$addtime."');";
$Model - >query($insert_sql);
ログイン後にコピー

2. テーブルのインスタンス化の場合は、ここに元の名前が入ります。テーブルの名前は sh_wxuser_collection です。 sh は接頭辞です。

$model = M('wxuser_collection'); //自动省去sh
$insert_sql = "INSERT INTO __TABLE__ (user_id,store_id,good_id,addtime) VALUES('".$user_id."','".$store_id."','".$good_id."','".$addtime."');";
$model - >query($insert_sql);
ログイン後にコピー

もう 1 つの書き方、_ を大文字で書くと、自動的に __

$model = M('WxuserCollection'); //自动省去sh
$insert_sql = "INSERT INTO __TABLE__ (user_id,store_id,good_id,addtime) VALUES('".$user_id."','".$store_id."','".$good_id."','".$addtime."');";
$model - >query($insert_sql);
ログイン後にコピー

に変換されます。

3. カプセル化された add ステートメント

##
$model = M('WxuserCollection');
$data = array('user_id' = >$user_id, 'store_id' = >$store_id, 'good_id' = >$good_id, 'addtime' = >$addtime);
$model - >data($data) - >add();
ログイン後にコピー

##4. カプセル化された edit ステートメント

$model = M('WxuserCollection');
$data = array('user_id' = >$user_id, 'store_id' = >$store_id, 'good_id' = >$good_id, 'addtime' = >$addtime);
$model - >data($data) - >where('id=3') - >save();
ログイン後にコピー

確かに非常に便利ですが、便利さは別として、元の SQL、元の SQL が最も興味深いことを忘れないでください。

5.find()

$model = M('WxuserCollection');
$res1 = $model - >find(1);
$res2 = $model - >find(2);
$res3 = $model - >where('good_id=1105 AND store_id = 1 AND user_id = 20') - >find();
ログイン後にコピー

find はデータの一部を取得し、find(1) は ID を取得します1 データの場合、find(2) は ID 2 のデータを取得します。最後の方法は、where という条件で最初のデータを取得することです。

5.select()

$model = M('WxuserCollection');
$res = $model - >where('good_id=1105 AND store_id = 1 AND user_id = 20') - >field('id,good_id as good') - >select();
ログイン後にコピー

すべてのデータを取得します。ここでの利点は、SQL ステートメントの順序を考慮する必要がなく、必要に応じて関数を呼び出すことができることです。

6.delete()

$model = M('WxuserCollection');
$res = $model - >where('id=1') - >delete(); // 成功返回1 失败返回0
ログイン後にコピー

条件に基づいた削除操作

7.field()

$model = M('WxuserCollection');
$res = $model - >field('id,good_id as good') - >select();
$res = $model - >field(array('id', 'good_id' = >'good')) - >select();
$res = $model - >field('id', true) - >select();
ログイン後にコピー

文字列と配列には 2 つの方法があり、3 つ目は取得を意味します。 id を除くすべてのフィールドを処理します。

8.order()

$model = M('WxuserCollection');
$res = $model - >order('id desc') - >select();
$res = $model - >order('id asc') - >select();
$res = $model - >order(array('id' = >'desc')) - >select();
$res = $model - >order(array('id')) - >select();
ログイン後にコピー

2 つのメソッドは文字列と配列で、デフォルトは asc です。

9.join()

$Model->join(' work ON artist.id = work.artist_id')->join('card ON artist.card_id = card.id')->select();
$Model->join('RIGHT JOIN work ON artist.id = work.artist_id')->select();
$Model->join(array(' work ON artist.id = work.artist_id','card ON artist.card_id = card.id'))->select();
ログイン後にコピー

LEFT JOIN メソッドを使用する必要がある場合は、デフォルトで使用されます。他の JOIN メソッドの場合、2 番目のメソッドに変更できます。

結合メソッドのパラメータが配列の場合、結合メソッドは 1 回のみ使用でき、文字列メソッドと混合することはできません。

10.setInc()

$User = M("User"); // 实例化User对象
$User->where('id=5')->setInc('score',3); // 用户的积分加3
$User->where('id=5')->setInc('score'); // 用户的积分加1
$User->where('id=5')->setDec('score',5); // 用户的积分减5
$User->where('id=5')->setDec('score'); // 用户的积分减1
ログイン後にコピー

11.getField()

フィールド値の取得

$User = M("User"); // 实例化User对象
// 获取ID为3的用户的昵称
$nickname = $User->where('id=3')->getField('nickname');
ログイン後にコピー

返されるニックネームは文字列の結果です。つまり、条件を満たすフィールドが複数ある場合でも、返される結果は 1 つだけです。

特定のフィールド列を取得する

要件を満たすフィールド列 (複数の結果) を返したい場合は、次を使用できます。

$User = M("User"); // 实例化User对象
// 获取status为1的用户的昵称列表
$nickname = $User->where('status=1')->getField('nickname',true);
ログイン後にコピー

#2 番目のパラメーターは true で渡され、返されるニックネームは、条件を満たすすべてのニックネームのリストを含む配列です。

返される結果の数を制限する必要がある場合は、次を使用できます:

$nickname = $User->where('status=1')->getField('nickname',8);
ログイン後にコピー

Get a list of results 2 フィールド

$User = M("User"); // 实例化User对象
 // 获取status为1的用户的昵称列表
$nickname = $User->where('status=1')->getField('id,nickname');
ログイン後にコピー

#getField メソッドが複数のフィールド名を渡す場合、デフォルトでは、その値を含む連想配列が返されます。最初のフィールドをインデックスとして使用します (したがって、最初は繰り返されないフィールドを選択してみてください)。

複数のフィールド リストの取得

$result = $User->where('status=1')->getField('id,account,nickname');
ログイン後にコピー

フィールドに 3 つ以上のフィールドが渡された場合name を指定すると、2 次元配列が返されます (select メソッドの戻り値と同様ですが、インデックスのキー名が 2 次元配列の最初のフィールドの値である点が異なります)

包括的な使用例

$where = array('a.store_id' => $this->store_id, 'a.user_id' => $this->user_id);
$collects = $this->collectModel->table("sh_wxuser_collection a")->field(array('b.name','b.price','b.oprice','b.logoimg','a.goods_id'))->limit($start, $offset)->order('a.addtime DESC')->where($where)->join(' sh_goods b ON a.goods_id = b.id')->select();// 获取当前页的记录
echo M()->getLastSql(); // 调试sql语句用
$count = $this->collectModel->table("sh_wxuser_collection a")->where($where)->count(); // 获取总的记录数
ログイン後にコピー

ここでは 2 つのテーブルが結合されているため、テーブル メソッドを使用してテーブルを再定義します。名前、対応する条件とパラメータは「プレフィックスを追加する」です。 a. または b.

フィールド field は文字列または配列です。

field('b.name', 'b.price', 'b.oprice', 'b.logoimg', 'a.goods_id') // 错误
ログイン後にコピー

これは以前にも書きましたが、これは大きな問題です。

フレームワークを使用すると、柔軟に SQL を書くことができません。ただし、SQL を深く理解していれば、フレームワークを柔軟に使用することもできます。

SQL ステートメントをデバッグするためのメソッド。

echo M()->getLastSql();
ログイン後にコピー

とても便利です。

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

PHP は Excel ファイルをアップロードし、データを MySQL データベースにインポートします

thinkphp3.2.3 バージョンのデータベースの追加、削除、変更 実装コードを確認してください

thinkPHP5 はデータベースにコンテンツを追加するメソッドを実装しています


以上がthinkPHP データベースでの追加、削除、変更、クエリ操作の詳細内容です。詳細については、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)

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

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

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() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

Golangでデータベースコールバック関数を使用するにはどうすればよいですか? Golangでデータベースコールバック関数を使用するにはどうすればよいですか? Jun 03, 2024 pm 02:20 PM

Golang でデータベース コールバック関数を使用すると、次のことを実現できます。 指定されたデータベース操作が完了した後にカスタム コードを実行します。追加のコードを記述せずに、個別の関数を通じてカスタム動作を追加します。コールバック関数は、挿入、更新、削除、クエリ操作に使用できます。コールバック関数を使用するには、sql.Exec、sql.QueryRow、または sql.Query 関数を使用する必要があります。

GolangでJSONデータをデータベースに保存するにはどうすればよいですか? GolangでJSONデータをデータベースに保存するにはどうすればよいですか? Jun 06, 2024 am 11:24 AM

JSON データは、gjson ライブラリまたは json.Unmarshal 関数を使用して MySQL データベースに保存できます。 gjson ライブラリは、JSON フィールドを解析するための便利なメソッドを提供します。json.Unmarshal 関数には、JSON データをアンマーシャリングするためのターゲット型ポインターが必要です。どちらの方法でも、SQL ステートメントを準備し、データをデータベースに永続化するために挿入操作を実行する必要があります。

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

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

さまざまなデータベースへの PHP 接続: MySQL、PostgreSQL、Oracle など さまざまなデータベースへの PHP 接続: MySQL、PostgreSQL、Oracle など Jun 01, 2024 pm 03:02 PM

PHP データベース接続ガイド: MySQL: MySQLi 拡張機能をインストールし、接続 (サーバー名、ユーザー名、パスワード、データベース名) を作成します。 PostgreSQL: PgSQL 拡張機能をインストールし、接続 (ホスト、データベース名、ユーザー、パスワード) を作成します。 Oracle: OracleOCI8 拡張機能をインストールし、接続 (サーバー名、ユーザー名、パスワード) を作成します。実際のケース: MySQL データ、PostgreSQL クエリ、OracleOCI8 更新レコードを取得します。

C++ を使用してデータベース接続と操作を処理するにはどうすればよいですか? C++ を使用してデータベース接続と操作を処理するにはどうすればよいですか? Jun 01, 2024 pm 07:24 PM

C++ の DataAccessObjects (DAO) ライブラリを使用して、データベース接続の確立、SQL クエリの実行、新しいレコードの挿入、既存のレコードの更新など、データベースに接続して操作します。具体的な手順は次のとおりです。 1. 必要なライブラリ ステートメントを含めます。 2. データベース ファイルを開きます。 3. SQL クエリを実行するかデータを操作するための Recordset オブジェクトを作成します。 4. 特定のニーズに応じて結果をスキャンするか、レコードを更新します。

See all articles