ホームページ バックエンド開発 PHPチュートリアル yii データベースの追加、削除、クエリ、変更を分析する_PHP チュートリアル

yii データベースの追加、削除、クエリ、変更を分析する_PHP チュートリアル

Jul 21, 2016 pm 03:04 PM
yii コード コピー ストレージ アクセス データベース 方法 解析する

1.データベースアクセス方法
最初のストレージ
テーブルを保存するときに使用します
例:

コードをコピー コードは次のとおりです:

$post=new Post;
$post-> ;title='サンプル投稿';
$post->content='サンプル投稿のコンテンツ';
$post->createTime=time();/$post->createTime=newCDbexpression_r('NOW()') ;
$post->save();
$user_field_data= 新しい user_field_data;
$user_field_data->flag=0;
$user_field_data->user_id=$profile->id;
$user_field_data->field_id =$_POST['emailhiden'];
$user_field_data->value1=$_POST['email'];
$user_field_data->save();

注 テーブルが 4 回保存されると、必須 4 つのハンドルを 4 回新規作成します

2 番目のタイプを保存します
保存後、このレコードのシリアル ID を見つける必要があります。これを行う $profile = new profile;$profile->id;

同じテーブルに 2 つのレコードを格納できるように変数の型をバインドするより安全な方法として 3 番目の
を格納します

コードをコピーします コードは次のとおりです:

$sql="insert intouser_field_data (user_id,field_id,flag,value1)values(:user_id,:field_id,:flag,:value1);";
$command=user_field_data::model()->dbConnection->createCommand($sql);
$command->bindParam(":user_id",$profile->id,PDO::PARAM_INT);
$command->bindParam(":field_id",$_POST['firstnamehiden'],PDO:: PARAM_INT) );
$command->bindParam(":flag",$tmpflag,PDO::PARAM_INT);
$command->bindParam(":value1",$_POST['firstname'],PDO::PARAM_STR ) ;
$command->execute();
$command->bindParam(":user_id",$profile->id,PDO::PARAM_INT);
$command->bindParam(":field_id" , $_POST['emailhiden'],PDO::PARAM_INT);
$command->bindParam(":flag",$tmpflag,PDO::PARAM_INT);
$command->bindParam(":value1", $ _POST['email'],PDO::PARAM_STR);
$rowchange =$command->execute();
if( $rowchange != 0){ 変更が成功しました}//
の判断に使用されます注: あなたを更新しますこのメソッドを使用して削除できます
$sql="プロファイルから削除 whereid=:id";
$command=profile::model()->dbConnection->createCommand($sql);
$command-> bindParam(":id",$userid,PDO::PARAM_INT);
$this->rowflag=$command->execute();
$sql="プロファイルの更新 setpass=:pass,role=:role ここでid=:id";
$command=profile::model()->dbConnection->createCommand($sql);
$command->bindParam(":pass",$password,PDO::PARAM_STR) ;
$command->bindParam(":role",$role,PDO::PARAM_INT);
$command->bindParam(":id",$userid,PDO::PARAM_INT);
$this-> ;rowflag=$command->execute();
//同様に updateAll() モードを変更します
$sql="update user_field_data set flag =:flag where user_id= :user_id and field_id= :field_id ";
元の SQL ステートメント
$criteria = newCDbCriteria;
$criteria->condition ='user_id = :user_id および field_id= :field_id';
$criteria->params =array(':user_id' => $user_id,':field_id' => $fieldid);
$arrupdate = array('flag'=> $flag);
if(user_field_data::model()->updateAll($arrupdate,$criteria)!= 0)
{
アップデートが成功した後。 。 。
}

4 番目の更新およびストレージ アプリケーションは同じハンドル プロセスを使用します:
最初にレコードが存在するかどうかをクエリし、存在する場合は更新し、存在しない場合は作成します
注: 1.最初のクエリは、save() の前の変数と同じである必要があります。 2. 保存するときは、再度ライブラリオブジェクトを新規作成する必要があります
コードをコピーします コードは次のとおりです:

$user_field_data =user_field_data::model()->findByAttributes(
$attributes = array('user_id'=> ;Yii::app()->user->user_id, 'field_id'=> $key));
if($user_field_data !== null)
{
$user_field_data- >value1= $value;
$user_field_data->save();
}
else
{
$user_field_data= 新しい user_field_data;
$user_field_data->user_id= Yii::app()->user-> ;user_id;
$user_field_data- >field_id= $key;
$user_field_data->value1= $value;
$user_field_data->save();
}

Query
注:プロジェクトはオブジェクト全体を見つけませんが、空の場合は次のように決定する必要があります
コードをコピーします コードは次のとおりです:

if($rows !== null) オブジェクトが空でない場合
{
returntrue;
}else{
returnfalse;
}
SELECT

テーブルを読み取るときに使用します
例:
最初のfind( )
コードをコピーします コードは次のとおりです:

// 指定された条件を満たす最初の行を検索します
$post=Post::model()->find($condition,$params) ;
// postID=10 の行を検索します
$post=Post::model()->find('postID=:postID',array(':postID'=>10));
同じステートメント、別の手段を使用します
$criteria=new CDbCriteria;
$criteria->select='title';// 'title' 列のみを選択します
$criteria->condition='postID=:postID';
$criteria- > ;params=array(':postID'=>10);
$post=Post::model()->find($criteria);// $params は必要ありません

Second find( )
コードをコピーします コードは次のとおりです:

$post=Post::model()->find(array(
'select'=>'title',
'condition' => 'postID=:postID',
'params'=>array(':postID'=>10),
));
// 指定された主キーを持つ行を検索します
$post=Post:: model() ->findByPk($postID,$condition,$params);
// 指定された属性値を持つ行を検索します
$post=Post::model()->findByAttributes($attributes,$condition,$ params);

例:
最初の findByAttributes()
$checkuser= user_field_data::model()->findByAttributes(
array('user_id' =>Yii::app()->user -> ;user_id, 'field_id'=> $fieldid));
2 番目のタイプ findByAttributes()
$checkuser =user_field_data::model()->findByAttributes(
$attributes = array('user_id'= > Yii::app()->user->user_id, 'field_id'=> $fieldid));
3 番目の方法は、条件がない場合、パラメータは必要ありません
$user_field_data= user_field_data::model()- >findAllByAttributes(
$attributes = array('user_id'=> ':user_id'),
$condition = "field_id in(:fields)",
$params = array(': user_id'=>Yii: :app()->user->user_id, ':fields'=> "$rule->dep_fields"));
// 指定された SQLstatement を使用して最初の行を検索します
$post=Post::model ()->findBySql($sql,$params);

user_field_data::model()->findBySql("selectid from user_field_data where user_id = :user_id and field_id =:field_id " , array(':user_id' =>$userid,':field_id'=>$fieldid));
この時に返されるのはオブジェクトです
4つ目の方法は他の条件を追加する方法です
http:/ /www.yiiframework.com/doc/api /CDbCriteria#limit-detail
$criteria = newCDbCriteria;
$criteria->select='newtime';//表示するフィールドのみを選択します。ライブラリですが、
$criteria->join = 'LEFT JOINPost ON Post.id=Date.id';//1 のように名前として COUNT(newtime) を記述することはできません。まず、Post テーブルとの関係ステートメントを追加します。関係関数 2.Date::model()->with ('post')->findAll($criteria)
$criteria->group ='newtime';
$criteria->limit = 2; //すべて 0 から始まり、いくつか選択します
$criteria- >offset = 2;//どのオフセットから開始するか
print_r(Date::model()->findAll($criteria));
番号を取得します行数またはその他の数値 count
// 指定された条件を満たす行数を取得します
$n=Post::model()->count($condition,$params);
// 指定された SQL を使用して行数を取得しますstate
$n=Post::model()->countBySql ($sql,$params);
// 指定された条件を満たす行が少なくとも 1 つあるかどうかを確認します
$exists=Post::model()-> ;exists($condition,$params);
UPDATE
例:
コードをコピー コードは次のとおりです:

$post=Post::model()->findByPk(10) ;
$post->title='new posttitle';
$post-> ;save(); // 変更をデータベースに保存します
// 指定された条件に一致する行を更新します
Post::model()-> updateAll($attributes,$condition,$params);

例: または上記の例を参照してください
コードをコピーします コードは次のとおりです:

$c=new CDbCriteria;
$c ->condition='something=1';
$c->limit=10;
$a=array ('name'=>'NewName');
Post::model()->updateAll( $a,$c);
// 指定された条件と主キーに一致する行を更新します
Post::model()->updateByPk($pk,$attributes,$condition,$params);

例子
复制代代記入例:

$profile =profile::model()->updateByPk(
Yii::app()->user->user_id,
$attributes = array('pass' =>md5($_POST['password']), 'role' => 1));
// 指定された条件を満たす行内のカウンター列を更新します
Post::model()-> ;updateCounters($counters,$condition,$params);

DELETE
例子:
复制代码代码如下:

$post=Post::model()->findByPk( 10);// ID が 10 の投稿があると仮定します
$post->delete(); // データベーステーブルから行を削除します
// 指定された条件に一致する行を削除します
Post::model()->deleteAll($condition,$params);
// 指定された条件と主キーに一致する行を削除します)
Post::model()->deleteByPk($pk,$condition,$params);
COMPARE

目前に取り出せる
1.//$allquestion=field::model()-> ;findAllBySql("selectlabel from field where step_id = :time1 ", array(':time1'=>1));
2. //$criteria=新しい CDbCriteria;
//$criteria->select='label,options';
//$criteria->condition='step_id=:postID';
//$criteria->params =array(':postID'=>1);
//$allquestion=field::model()->findAll($criteria);
//$allquestion=field::model()->find ("",array("label"));
モデルファイル内の関連ファイルrelations()関数と組み合わせて使用​​できます。これは
$criteria=newCDbCriteria;
$criteria->condition='field .step_id=1';
$this->_post=field::model()->with('step')->findAll($criteria);
これで達成された数集合里面に含まれるステップ表内の值そして、この条件は、step.id=field.step_id
public functionrelations()
{
return array(
'step'=>array(self::BELONGS_TO,'step', 'step_id'),
)です。 ;
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327748.html技術記事 1. データベースの保存方法 保存第一次保存時間 例: 复制代码代码次のとおり: $post=new Post; $post-title='サンプル投稿'; $post-content='サンプル投稿の内容...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) May 01, 2024 pm 12:01 PM

残念ながら、WeChat は広く使用されているソーシャル ソフトウェアであり、何らかの理由で特定の連絡先を誤って削除してしまうことがよくあります。ユーザーがこの問題を解決できるように、この記事では、削除された連絡先を簡単な方法で取得する方法を紹介します。 1. WeChat の連絡先削除メカニズムを理解します。これにより、削除された連絡先を取得できるようになります。WeChat の連絡先削除メカニズムでは、連絡先がアドレス帳から削除されますが、完全には削除されません。 2. WeChat の組み込みの「連絡先帳復元」機能を使用します。WeChat には、この機能を通じて以前に削除した連絡先をすばやく復元できる「連絡先帳復元」機能が用意されています。 3. WeChat 設定ページに入り、右下隅をクリックし、WeChat アプリケーション「Me」を開き、右上隅にある設定アイコンをクリックして設定ページに入ります。

モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) May 04, 2024 pm 06:01 PM

テクノロジーの発展に伴い、モバイルゲームは人々の生活に欠かせないものになりました。かわいいドラゴンエッグの画像と面白い孵化過程で多くのプレイヤーの注目を集めており、その中でも注目を集めているゲームの一つがモバイル版ドラゴンエッグです。プレイヤーがゲーム内で自分のドラゴンをより適切に育成し成長させることができるように、この記事ではモバイル版でドラゴンの卵を孵化させる方法を紹介します。 1. 適切な種類のドラゴン エッグを選択する プレイヤーは、ゲーム内で提供されるさまざまな種類のドラゴン エッグの属性と能力に基づいて、自分に適したドラゴン エッグの種類を慎重に選択する必要があります。 2. 孵化機のレベルをアップグレードします。プレイヤーはタスクを完了し、小道具を収集することで孵化機のレベルを向上させる必要があります。孵化機のレベルは孵化速度と孵化成功率を決定します。 3. プレイヤーはゲームに参加する必要がある孵化に必要なリソースを収集します。

携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) 携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) May 07, 2024 pm 03:34 PM

携帯電話が人々の日常生活において重要なツールになるにつれて、フォント サイズの設定は重要なパーソナライゼーション要件になりました。さまざまなユーザーのニーズを満たすために、この記事では、簡単な操作で携帯電話の使用体験を向上させ、携帯電話のフォントサイズを調整する方法を紹介します。携帯電話のフォント サイズを調整する必要があるのはなぜですか - フォント サイズを調整すると、テキストがより鮮明で読みやすくなります - さまざまな年齢のユーザーの読書ニーズに適しています - フォント サイズを使用すると、視力の悪いユーザーにとって便利です携帯電話システムの設定機能 - システム設定インターフェイスに入る方法 - 設定インターフェイスで「表示」オプションを見つけて入力します。 - 「フォント サイズ」オプションを見つけて、サードパーティでフォント サイズを調整します。アプリケーション - フォント サイズの調整をサポートするアプリケーションをダウンロードしてインストールします - アプリケーションを開いて、関連する設定インターフェイスに入ります - 個人に応じて

携帯電話の画面を保護する携帯電話のスクリーンプロテクターの選び方 (携帯電話のスクリーンプロテクターを購入する際のいくつかの重要なポイントとヒント) 携帯電話の画面を保護する携帯電話のスクリーンプロテクターの選び方 (携帯電話のスクリーンプロテクターを購入する際のいくつかの重要なポイントとヒント) May 07, 2024 pm 05:55 PM

スマートフォンの普及に伴い、携帯フィルムは欠かせないアクセサリーの一つとなりました。耐用年数を延ばすには、携帯電話の画面を保護する適切な携帯電話フィルムを選択してください。この記事では、読者が自分に最適な携帯電話フィルムを選択できるように、携帯電話フィルムを購入する際のいくつかのポイントとテクニックを紹介します。携帯電話フィルムの素材と種類を理解する:PET フィルム、TPU など。 携帯電話フィルムは強化ガラスを含むさまざまな素材でできています。 PETフィルムは比較的柔らかく、強化ガラスフィルムは耐傷性に優れ、TPUは耐衝撃性能に優れています。選択する際は、個人の好みやニーズに基づいて決定できます。画面の保護の程度を考慮してください。携帯電話のフィルムの種類によって、画面の保護の程度も異なります。 PETフィルムは主に傷防止の役割を果たしますが、強化ガラスフィルムは落下耐性に優れています。より良いものを選ぶことができます

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

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

清華大学と Zhipu AI オープンソース GLM-4: 自然言語処理に新たな革命を起こす 清華大学と Zhipu AI オープンソース GLM-4: 自然言語処理に新たな革命を起こす Jun 12, 2024 pm 08:38 PM

2023 年 3 月 14 日に ChatGLM-6B が発売されて以来、GLM シリーズ モデルは幅広い注目と認知を得てきました。特にChatGLM3-6Bがオープンソース化されてからは、Zhipu AIが投入する第4世代モデルに対する開発者の期待が高まっている。 GLM-4-9B のリリースにより、この期待はついに完全に満たされました。 GLM-4-9B の誕生 小型モデル (10B 以下) により強力な機能を提供するために、GLM 技術チームはこの新しい第 4 世代 GLM シリーズ オープン ソース モデル、GLM-4-9B をほぼ半年の期間を経て発売しました。探検。このモデルは、精度を確保しながらモデルサイズを大幅に圧縮し、推論速度の高速化と効率化を実現しています。 GLM 技術チームの調査はまだ終わっていない

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

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

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())

See all articles