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

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

不言
不言オリジナル
2018-06-07 15:22:172945ブラウズ

この記事では主に 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 までご連絡ください。