這篇文章主要介紹了php的YII框架中使用數據庫的配置和sql操作實例教程,yii支持綁定多種數據庫,文中主要對各種查詢語句在yii中的使用給出了例子,需要的朋友可以參考下
php yii框架怎么連接數據庫
數據庫訪問 (DAO)
Yii 包含了一個建立在 PHP pdo 之上的數據訪問層 (DAO). DAO為不同的數據庫提供了一套統一的API. 其中ActiveRecord 提供了數據庫與模型(mvc 中的 M,Model) 的交互,QueryBuilder 用于創建動態的查詢語句. DAO提供了簡單高效的SQL查詢,可以用在與數據庫交互的各個地方.
Yii 默認支持以下數據庫 (DBMS):
立即學習“PHP免費學習筆記(深入)”;
MySQLMariaDBSQLitePostgreSQLCUBRID: 版本 >= 9.3 . (由于PHP PDO 擴展的一個bug 引用值會無效,所以你需要在 CUBRID的客戶端和服務端都使用 9.3 )OracleMSSQL: 版本>=2005.
1、配置
開始使用數據庫首先需要配置數據庫連接組件,通過添加 db 組件到應用配置實現(”基礎的” Web 應用是 config/web.php),DSN( Data Source Name )是數據源名稱,用于指定數據庫信息.如下所示:
return?[ ??//?... ??'components'?=>?[ ????//?... ????'db'?=>?[ ??????'class'?=>?'yiidbConnection', ??????'dsn'?=>?'mysql:host=localhost;dbname=mydatabase',?//?MySQL,?MariaDB ??????//'dsn'?=>?'sqlite:/path/to/database/file',?//?SQLite ??????//'dsn'?=>?'pgsql:host=localhost;port=5432;dbname=mydatabase',?//?PostgreSQL ??????//'dsn'?=>?'cubrid:dbname=demodb;host=localhost;port=33000',?//?CUBRID ??????//'dsn'?=>?'sqlsrv:Server=localhost;Database=mydatabase',?//?MS?SQL?Server,?sqlsrv?driver ??????//'dsn'?=>?'dblib:host=localhost;dbname=mydatabase',?//?MS?SQL?Server,?dblib?driver ??????//'dsn'?=>?'mssql:host=localhost;dbname=mydatabase',?//?MS?SQL?Server,?mssql?driver ??????//'dsn'?=>?'oci:dbname=//localhost:1521/mydatabase',?//?Oracle ??????'username'?=>?'root',?//數據庫用戶名 ??????'password'?=>?'',?//數據庫密碼 ??????'charset'?=>?'utf8', ????], ??], ??//?... ];
2、配置連接組件后可以使用以下語法訪問:
$connection?=?Yii::$app->db;
如果你想通過ODBC連接數據庫,則需要配置yiidbConnection::driverName 屬性,例如:
'db'?=>?[ ??'class'?=>?'yiidbConnection', ??'driverName'?=>?'mysql', ??'dsn'?=>?'odbc:Driver={MySQL};Server=localhost;Database=test', ??'username'?=>?'root', ??'password'?=>?'', ],
如果不想定義數據庫連接為全局應用組件,可以在代碼中直接初始化使用:
$connection?=?new?yiidbConnection([ ??'dsn'?=>?$dsn, ???'username'?=>?$username, ???'password'?=>?$password, ]); $connection->open();
3、如果在創建了連接后需要執行額外的 SQL 查詢,可以添加以下代碼到應用配置文件:
return?[ ??//?... ??'components'?=>?[ ????//?... ????'db'?=>?[ ??????'class'?=>?'yiidbConnection', ??????//?... ??????'on?afterOpen'?=>?function($event)?{ ????????$event->sender->createCommand("SET?time_zone?=?'UTC'")->execute(); ??????} ????], ??], ??//?... ];
如果執行 SQL 不返回任何數據可使用命令中的 execute 方法:
$command?=?$connection->createCommand('UPDATE?post?SET?status=1?WHERE?id=1'); $command->execute();
你可以使用insert,update,delete 方法,這些方法會根據參數生成合適的SQL并執行.
//?INSERT $connection->createCommand()->insert('user',?[ ??'name'?=>?'Sam', ??'age'?=>?30, ])->execute(); //?INSERT?一次插入多行 $connection->createCommand()->batchInsert('user',?['name',?'age'],?[ ??['Tom',?30], ??['Jane',?20], ??['Linda',?25], ])->execute(); //?UPDATE $connection->createCommand()->update('user',?['status'?=>?1],?'age?>?30')->execute(); //?DELETE $connection->createCommand()->delete('user',?'status?=?0')->execute();
推薦:《YII教程》