執行 SQL 語句
sql
1 $db = \Yii::$app->db; 2 $rows = $db->createCommand('SELECT * FROM zs_dynasty') 3 ->queryAll();
1 $rowCount=$command->execute(); // 執行無查詢 SQL 2 $dataReader=$command->query(); // 執行一個 SQL 查詢 3 $rows=$command->queryAll(); // 查詢並返回結果中的全部行 4 $row=$command->queryRow(); // 查詢並返回結果中的第一行 5 $column=$command->queryColumn(); // 查詢並返回結果中的第一列 6 $value=$command->queryScalar(); // 查詢並返回結果中第一行的第一個字段
獲取查詢結果
數組
1 $db = \Yii::$app->db; 2 $query = $db->createCommand('SELECT * FROM zs_dynasty') 3 ->query(); 4 while(($row=$query->read())!==false) { 5 print_r($row); 6 }
7 // 使用 foreach 遍歷數據中的每一行 8 $query = $db->createCommand('SELECT * FROM zs_dynasty') 9 ->query(); 10 foreach($query as $row) { 11 print_r($row); 12 } 13 // 一次性提取全部行到一個數組 14 $query = $db->createCommand('SELECT * FROM zs_dynasty') 15 ->query(); 16 $rows=$query->readAll(); 17 print_r($rows);使用事務
1 $db = \Yii::$app->db; 2 $transaction=$db->beginTransaction(); 3 try 4 { 5 $query = $db->createCommand('SELECT * FROM zs_dynasty') 6 ->query(); 7 $transaction->commit(); 8 } 9 catch(Exception $e) // 若是有一條查詢失敗,則會拋出異常 10 { 11 $transaction->rollBack(); 12 } 13 $rows=$query->readAll(); 14 print_r($rows);
1 綁定參數 2 // 一條帶有兩個佔位符 ":username" 和 ":email"的 SQL 3 $sql="INSERT INTO tbl_user (username, email) VALUES(:username,:email)"; 4 $db = \Yii::$app->db; 5 $command=$db->createCommand($sql); 6 // 用實際的用戶名替換佔位符 ":username" 7 $command->bindParam(":username",$username,PDO::PARAM_STR); 8 // 用實際的 Email 替換佔位符 ":email" 9 $command->bindParam(":email",$email,PDO::PARAM_STR); 10 $command->execute(); 11 // 使用新的參數集插入另外一行 12 $command->bindParam(":username",$username2,PDO::PARAM_STR); 13 $command->bindParam(":email",$email2,PDO::PARAM_STR); 14 $command->execute();
1 綁定列 2 $sql="SELECT username, email FROM tbl_user"; 3 $dataReader=$db->createCommand($sql)->query(); 4 // 使用 $username 變量綁定第一列 (username) 5 $dataReader->bindColumn(1,$username); 6 // 使用 $email 變量綁定第二列 (email) 7 $dataReader->bindColumn(2,$email); 8 while($dataReader->read()!==false) 9 { 10 // $username 和 $email 含有當前行中的 username 和 email 11 }
1 使用表前綴 2 配置:Connection::tablePrefix 3 在 SQL 語句中使用 {{%TableName}} 4 $sql='SELECT * FROM {{user}}'; 5 $users=$connection->createCommand($sql)->queryAll();