當前位置:首頁 » 編程語言 » yii2sqlin

yii2sqlin

發布時間: 2022-06-04 04:41:59

㈠ Yii2框架操作資料庫的方法分析【以mysql為例】

本文實例講述了Yii2框架操作資料庫的方法。分享給大家供大家參考,具體如下:
准備資料庫
DROP
TABLE
IF
EXISTS
`pre_user`;
CREATE
TABLE
`pre_user`(
`id`
int(11)
AUTO_INCREMENT
PRIMARY
KEY,
`username`
varchar(255)
NOT
NULL,
`password`
varchar(32)
NOT
NULL
DEFAULT
'',
`password_hash`
varchar(255)
NOT
NULL
DEFAULT
'',
`email`
varchar(255)
NOT
NULL
DEFAULT
'',
`status`
smallint(6)
NOT
NULL
DEFAULT
10,
`created_at`
smallint(6)
NOT
NULL
DEFAULT
0,
`updated_at`
smallint(6)
NOT
NULL
DEFAULT
0
)ENGINE=InnoDB
DEFAULT
CHARSET=utf8mb4;
配置連接
config\db.php
<?php
return
[
'class'
=>
'yii\db\Connection',
'dsn'
=>
'mysql:host=localhost;dbname=yii2',
'username'
=>
'root',
'password'
=>
'root',
'charset'
=>
'utf8mb4',
'tablePrefix'
=>
'pre_'
];
查看資料庫連接是否成功
控制器里列印:
var_mp(\Yii::$app->db);
怎麼執行SQL語句?
增刪改
//
接收表單的數據
$username
=
'jack';
$sql
=
"INSERT
INTO
{{%user}}
(username,status)
VALUES
(:username,:status)";
//
返回受影響行數
$row
=
\Yii::$app->db->createCommand($sql,['username'=>$username,'status'=>8])->execute();
//
獲取自增ID
echo
\Yii::$app->db->getLastInsertID();
查詢
$sql
=
"SELECT
*
FROM
{{%user}}
WHERE
id>:id";
//
查詢結果是一個二維數組
$userArr
=
\Yii::$app->db->createCommand($sql,['id'=>1])->queryAll();
//
如果要查詢一個
$user
=
\Yii::$app->db->createCommand($sql,['id'=>1])->queryOne();
//
如果要返回單值
//
例如
select
count(*)語句
$count
=
\Yii::$app->db->createCommand($sql,['id'=>1])->queryScalar();
echo
$count;
更多關於Yii相關內容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php面向對象程序設計入門教程》、《php字元串(string)用法總結》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧匯總》
希望本文所述對大家基於Yii框架的PHP程序設計有所幫助。
您可能感興趣的文章:Yii2.0高級框架資料庫增刪改查的一些操作Yii2——使用資料庫操作匯總(增刪查改、事務)Yii2資料庫操作常用方法小結Yii2框架實現資料庫常用操作總結Yii2實現跨mysql資料庫關聯查詢排序功能代碼Yii+MYSQL鎖表防止並發情況下重復數據的方法Yii
連接、修改
MySQL
資料庫及phpunit
測試連接Yii實現MySQL多資料庫和讀寫分離實例分析Yii操作資料庫實現動態獲取表名的方法Yii操作資料庫的3種方法

㈡ 一個關於 把原生sql 轉成yii2 語法的問題

Yii2怎麼執行原生sql語句
執行:
Yii::$app->getDb()->createCommand("Your SQL")->execute();
查詢:
Yii::$app->getDb()->createCommand("Your SQL")->queryAll();
其他:
Yii::$app->getDb()->createCommand("Your SQL")->xxx

㈢ yii2怎麼連接sql server

在saas中,多租戶資料庫分庫管理時常常需要自定義資料庫鏈接,並且需要支持在框架載入後再調用資料庫連接。

Yii2 如何定義資料庫連接要注意的是:

即除了使用/Yii::app&#8722;>set()外,還需要再多使用下面一句話:/Yii::app->$database->open();
因為在框架載入後再調用時,yii本身並不會幫打開連接。使用如下代碼:

<?php/***User:chenlb*/namespacebackend/moles/monitorMysql/controllers/show;classAllDatabasesextends/yii/base/Action{privatestatic$_conn=[];publicfunctionrun(){//CreateTestDBConnection$db=$this->getDb('資料庫名稱');var_mp($db->getSchema()->getTableSchema('log')->columns['id']->isPrimaryKey);exit;}/***得到資料庫連接*/publicfunctiongetDb($database){if(!isset(self::$_conn[$database])){$connInfo=['class'=>'yii/db/Connection','dsn'=>'mysql:host=HOST_IP;port=3307;dbname='.$database,'username'=>'username','password'=>'password','charset'=>'utf8'];/Yii::$app->set($database,$connInfo);/Yii::$app->$database->open();self::$_conn[$database]=/Yii::$app->$database;}returnself::$_conn[$database];}}

㈣ yii2.0獲取到最後一條執行的sql怎麼看

這個有很多種方法

1. yii有提供一個getRawSql方法 比如說一個查詢

$query=User::find();
$query->select(['username','age'])->where(['id'=>1)->one();

echo$query->createCommand()->getRawSql();//輸出sql語句

2.可開啟yii2的debug模塊,這個功能很強大,在裡面可以查到當前頁面所有的sql信息,具體配置方法自行網路,網上太多這個配置了

3.查找Yii源碼 隨便找個模型調用原生的方法 比如 User::updateAll 方法,通過編輯器定位到updateAll方法的源碼 你會發現下面一段代碼

publicstaticfunctionupdateAll($attributes,$condition='',$params=[])
{
$command=static::getDb()->createCommand();
$command->update(static::tableName(),$attributes,$condition,$params);

return$command->execute();
}

繼續定位execute方法

publicfunctionexecute()
{
$sql=$this->getSql();
$rawSql=$this->getRawSql();

Yii::info($rawSql,__METHOD__);
if($sql==''){
return0;
}

$this->prepare(false);
$token=$rawSql;
try{
Yii::beginProfile($token,__METHOD__);

$this->pdoStatement->execute();
$n=$this->pdoStatement->rowCount();

Yii::endProfile($token,__METHOD__);

$this->refreshTableSchema();

return$n;
}catch(Exception$e){
Yii::endProfile($token,__METHOD__);
throw$this->db->getSchema()->convertException($e,$rawSql);
}
}

方法里$rawSql就是最原生要執行的sql拉,在這里打斷點輸出就ok

個人推薦第二種方法,最方法最高效,具體配置方法自己網路,很簡單!

㈤ yii2 怎麼執行原生態的insert

$connection = Yii::app()->db; //連接

//查找

$sql = 「SELECT * FROM `tbl_user` ORDER BY id DESC」;

$command = $connection->createCommand($sql);

$result = $command->queryAll();

print_r($result);

//添加

$sql = 」 INSERT INTO `tbl_user` (`username`, `password`, `email`) VALUES (『test』, 『test』, 『[email protected]』) 「;

$command=$connection->createCommand($sql);

print_r($command->execute());

//添加 返回自增id

$command1 = $connection->createCommand(「SELECT last_insert_id()」);

$result = $command1->queryAll();

//常用函數

(1)如果你執行的SQL語句有返回結果集: 例如SELECT。通常用query開頭的系列函數:

$dataReader=$command->query(); // 執行一個 SQL 查詢

$rows=$command->queryAll(); // 查詢並返回結果中的所有行

$row=$command->queryRow(); // 查詢並返回結果中的第一行

$column=$command->queryColumn(); // 查詢並返回結果中的第一列

$value=$command->queryScalar(); // 查詢並返回結果中第一行的第一個字

(2)你執行的SQL語句返回的不是結果集,只是狀態值,例如:INSERT ,UPDATE,DELETE.則用execute()

$this->command->execute();

//使用事務的一種常見情形:CDbTransaction

$transaction = $connection->beginTransaction();

try{

$connection->createCommand($sql1)->execute();

$connection->createCommand($sql2)->execute();

………

$transaction->commit();

}

catch(Exception $e){ // 如果有一條查詢失敗,則會拋出異常

$transaction->rollBack();

}

㈥ yii2單表內欄位關聯查詢該怎麼做

1,使用sqldatasources控制項來關聯gridview,只需設置一下屬性,沒上面代碼就可以實現顯示數據。 2,查詢語句查詢返回一個數據集,然後賦值給gridview的datasource屬性

㈦ yii2怎麼鏈接到伺服器資料庫

請參考yii2 官網權威指南2.0

資料庫訪問 (DAO)

$db=newyiidbConnection([
'dsn'=>'mysql:host=localhost;dbname=example',
'username'=>'root',
'password'=>'',
'charset'=>'utf8',
]);

//orconfiginthemian-local.php
'db'=>[
'class'=>'yiidbConnection',
'dsn'=>'mysql:host=localhost;dbname=example',
'username'=>'root',
'password'=>'',
'charset'=>'utf8',
],
熱點內容
怎麼打開電腦雲伺服器 發布:2025-02-09 08:36:01 瀏覽:219
日元對人民幣演算法 發布:2025-02-09 08:35:52 瀏覽:39
安卓手機微信語音怎麼不能轉文 發布:2025-02-09 08:25:30 瀏覽:922
c上機編程題 發布:2025-02-09 08:17:18 瀏覽:319
顯示語法錯誤編譯不出來 發布:2025-02-09 08:17:09 瀏覽:285
酒店配置什麼滅火系統 發布:2025-02-09 08:06:37 瀏覽:774
java至尊 發布:2025-02-09 08:03:23 瀏覽:559
pythonwith 發布:2025-02-09 08:00:25 瀏覽:173
Ftp打開文件是只讀模式 發布:2025-02-09 07:40:55 瀏覽:505
androidlistview點擊事件 發布:2025-02-09 07:25:52 瀏覽:173