thinkPHPデータベースの追加、削除、変更、クエリ操作方法例を詳しく解説

高洛峰
リリース: 2023-03-04 18:10:01
オリジナル
1458 人が閲覧しました

この記事の例では、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);
ログイン後にコピー


別の書き方、_を大文字で書くと_

$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.

$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 を忘れないでください。

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();
ログイン後にコピー


他の JOIN メソッドを使用する必要がある場合は、

join メソッドのパラメータが配列の場合、デフォルトで LEFT JOIN メソッドが使用されます。 、join Once メソッドのみを使用でき、string メソッドと混合することはできません。

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);
ログイン後にコピー


を使用して 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');
ログイン後にコピー


2つ以上のフィールド名が渡された場合、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 つのテーブルが結合されているため、table メソッドを使用してテーブル名を再定義し、対応する条件とパラメーターを指定する必要があります。接頭辞が付けられます。 a. または b.

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

rreee

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

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

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

field('b.name', 'b.price', 'b.oprice', 'b.logoimg', 'a.goods_id') // 错误
ログイン後にコピー
この記事が、皆様の ThinkPHP フレームワークに基づく PHP プログラムの設計に役立つことを願っています。

thinkPHP データベースの追加、削除、変更、クエリ操作方法の詳細な例については、PHP 中国語 Web サイトの関連記事に注目してください。

関連記事:

thinkphp で独自の関数やクラスを記述する方法、配置場所、呼び出し方法についてアドバイスをお願いします

関数やクラス ライブラリ メソッドを呼び出すだけの ThinkPHP サンプル コード

データをバッチ挿入するためのThinkPHP3.2フレームワークのAddAll()メソッドの使用法

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート