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'),
)です。 ;
}
http://www.bkjia.com/PHPjc/327748.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/327748.html技術記事 1. データベースの保存方法 保存第一次保存時間 例: 复制代码代码次のとおり: $post=new Post; $post-title='サンプル投稿'; $post-content='サンプル投稿の内容...