這篇文章介紹的內容是關於Yii 11.17 資料庫相關操作說明,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
範例:
$result = array( 'id'=>null, 'val'=>0 ); $row1 = Yii::app()->db->createCommand()->insert('test1', $result); $id = Yii::app()->db->getLastInsertID(); $row2 = Yii::app()->db->createCommand()->update('test1', array('val'=>$id) , 'id=:id',array(':id'=>$id)); echo $id; exit;
#1. 建立資料庫連線可以使用 try...catch 擷取可能拋出的例外
##$connection=new CDbConnection($dsn,$username,$password);
# DSN格式
# SQLite: sqlite:/path/to/dbfile
# MySQL: mysql:host=localhost;dbname=testdb
# PostgreSQL: pgsql:host=localhost;port=5432;dbname=testdb
##4 # SQL Server: mssql:host=localhost;dbname=testdb
# Oracle: oci:dbname=//localhost:1521/testdb
array( 'components'=>array( 'db'=>array( 'class'=>'CDbConnection', 'connectionString'=>'mysql:host=localhost;dbname=testdb', 'username'=>'root', 'password'=>'password', 'emulatePrepare'=>true, // needed by some MySQL installations ), ), )
$connection = Yii::app()->db
$connection->active=true; # 建立链接之后active为true;
$connection->active=false; # 关闭连接
$command=$connection->createCommand($sql);
#execute()方法用來執行INSERT, UPDATE 和DELETE 。
如果成功,它將傳回此執行所影響的行數。
#query() 方法執行一條會傳回若干行資料的 SQL 語句,例如 SELECT。
#如果成功,它將傳回一個CDbDataReader 實例,透過此實例可以遍歷資料的結果行。
#為簡單起見,(Yii)也實作了一系列 queryXXX() 方法以直接傳回查詢結果
#如果SQL發生錯誤,將會拋出一個例外。 .
$rowCount = $command->execute(); # 执行无查询 SQL $dataReader = $command->query(); # 执行一个 SQL 查询 $rows = $command->queryAll(); # 查询并返回结果中的所有行 $row = $command->queryRow(); # 查询并返回结果中的第一行 $column = $command->queryColumn(); # 查询并返回结果中的第一列 $value = $command->queryScalar(); # 查询并返回结果中第一行的第一个字段
##取得查詢結果
#在產生CDbDataReader後
#也可以在foreach 語言結構中使用CDbDataReader
#
$dataReader = $command->query();
foreach
# ($dataReader as $row) { ... }
$transaction= $connection->beginTransaction(); try { $connection->createCommand($sql1)->execute(); $connection->createCommand($sql2)->execute(); #其他 $transaction->commit(); } catch(Exception $e) # 如果有一条查询失败,则会抛出异常 { $transaction->rollBack(); #回滚 }
$sql="INSERT INTO tbl_user (username, email) VALUES(:username,:email)"; $command = $connection->createCommand($sql);
$command->bindParam(":username", $username, PDO::PARAM_STR);
$command->bindParam(":email",$email,PDO::PARAM_STR); $command->execute();
$command->bindParam(":username",$username2,PDO::PARAM_STR); $command->bindParam(":email",$email2,PDO::PARAM_STR); $command->execute();
$sql="SELECT username, email FROM tbl_user"; $dataReader=$connection->createCommand($sql)->query();
$dataReader->bindColumn(1,$username);
$dataReader->bindColumn(2,$email);
array( 'components'=>array( 'db'=>array( 'class'=>'CDbConnection', 'connectionString'=>'mysql:host=localhost;dbname=testdb', 'username'=>'root', 'password'=>'password', 'emulatePrepare'=>true, // needed by some MySQL installations 'tablePrefix'=>"表前缀_" ), ), )
$sql='SELECT * FROM {{user}}'; $users=$connection->createCommand($sql)->queryAll();
$user = Yii::app()->db->createCommand() ->select('username, password') ->from('tbl_user') ->where('id=:id', array(':id'=>1)) ->queryRow();
$conditions 參數可以是一個字串(例如 'id=1')或一個陣列。
如果是後者,它必須是這種格式array(operator, operand1, operand2, ...), 運算符可以是下面當中的一個,可能的運算元依賴對應的運算子:
and: 運算元應該使用AND連接起來。
例如:
array('and', 'id=1', 'id=2')
將產生
'id=1 AND id=2'。如果一個操作數是一個數組, 它將被使用這裡描述的相同規則轉換成一個字串。例如:
array('and', 'type=1', array('or', 'id=1', 'id=2'))
將產生
'type=1 AND ( id=1 OR id=2)'
該方法將不做任何引用或轉義。
or: 和 and 運算子相似,除了操作數是使用OR連接起來。
in: 操作數1應該是一列或DB表達式,操作數2應該是數組, 表示對應的列的值或DB表達式應該在的範圍。
例如:
array('in', 'id', array(1,2,3))
將產生'id IN (1,2,3)'
這個方法將正確的引用列名和範圍中的轉義值。
not in: 和 in 相似,除了在產生條件時把IN替換成NOT IN。
like: 運算元1應該是一列或一個DB表達式,操作數2是一個字串或一個陣列 表示列或DB表達式應該like的值。
例如:
array('like', 'name', '%tester%')
將產生
"name LIKE '%tester%'"
當值範圍被給定為一個數組,多個LIKE謂語將被生成並使用AND連接起來。
例如:
array('like', 'name', array('%test%', '%sample%'))
將產生
"name LIKE '%test%' AND name LIKE '%sample%'"
這個方法將正確的引用列名和範圍中的轉義值。
not like: 和 like相似,除了在產生條件時使用NOT LIKE取代LIKE。
or like: 和 like相似,除了OR被用來把LIKE謂語連接起來。
or not like: 和 not like相似,除了OR被用作把NOT LIKE謂語連接起來。
相關推薦:
############################### #Yii2配置基本概念######以上是Yii 11.17 資料庫相關操作說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!