這篇文章介紹的內容是關於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
# 存取資料庫連接了。它已經被自動啟動了,除非我們特意配置了
# CDbConnection::autoConnect 為 false。
# 透過這種方式,這個單獨的DB連接就可以在我們程式碼中的許多地方共享。
# 如果沒有,你可能需要明確建立一個連線:
# $connection=new CDbConnection($dsn,$username,$password);
$connection->active=true; # 建立链接之后active为true;
$connection->active=false; # 关闭连接
##執行SQL
$command=$connection->createCommand($sql);
#SQL修改
$command->text = $newSQL;
#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();
#方法1 重複呼叫read() 直到它傳回false
#while
( ($row = $dataReader->read()) !== false) { ... }
##方法2 使用foreach 遍歷資料中的每一行
foreach
# ($dataReader as $row) { ... }
$transaction= $connection->beginTransaction(); try { $connection->createCommand($sql1)->execute(); $connection->createCommand($sql2)->execute(); #其他 $transaction->commit(); } catch(Exception $e) # 如果有一条查询失败,则会抛出异常 { $transaction->rollBack(); #回滚 }######### ########################################################### ######預處理(參數綁定) 避免注入提高重複執行的效率####佔位符可以是命名的(表現為一個唯一的標記) 或未命名的(表現為一個問號)。佔位符將被替換為實際的參數。 ####呼叫 CDbCommand::bindParam() 或 CDbCommand::bindValue() 以使用實際參數取代這些佔位符。 ####這些參數不需要使用引號引起來:底層的資料庫驅動會為你搞定這個參數綁定必須在 SQL 語句執行之前完成。 ####範例####一條帶有兩個佔位符":username" 和":email"的SQL######
$sql="INSERT INTO tbl_user (username, email) VALUES(:username,:email)"; $command = $connection->createCommand($sql);####用實際的使用者名稱替換佔位符": username"######
$command->bindParam(":username", $username, PDO::PARAM_STR);####用實際的Email 取代佔位符":email"######
$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();####bindParam() 和bindValue() 非常相似。 ####唯一的差異就是前者使用一個 PHP 變數綁定參數,####而後者使用一個值。對於那些記憶體中的大數據塊參數,處於效能的考慮,應優先使用前者。 ########################################################### ##############綁定列######
$sql="SELECT username, email FROM tbl_user"; $dataReader=$connection->createCommand($sql)->query();####使用$username 變數綁定第一列(username)######
$dataReader->bindColumn(1,$username);#### #使用$email 變數綁定第二列(email)######
$dataReader->bindColumn(2,$email);######while###($dataReader->read()!==false)###{## # #$username 和$email 含有目前行中的username 和email### #這裡就不用每次都給兩個變數賦值了###}############### ##################################################使用表前綴####配置CDbConnection::tablePrefix 屬性為所希望的表前綴。 ######
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();###where() 方法(可用自v1 .1.6)###public CDbCommand where(mixed $conditions, array $params=array())###$conditions mixed 放在WHERE部分的條件。 ###$params array 綁定到此查詢的參數 (name=>value)###{return} CDbCommand 傳回此指令物件本身##設定設定的WHERE。 ###這個方法要求一個 $conditions 參數和一個 $params 參數, 指定值綁定到查詢。 ################
$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中文網其他相關文章!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于索引优化器工作原理的相关内容,其中包括了MySQL Server的组成,MySQL优化器选择索引额原理以及SQL成本分析,最后通过 select 查询总结整个查询过程,下面一起来看一下,希望对大家有帮助。

sybase是基于客户/服务器体系结构的数据库,是一个开放的、高性能的、可编程的数据库,可使用事件驱动的触发器、多线索化等来提高性能。

visual foxpro数据库文件是管理数据库对象的系统文件。在VFP中,用户数据是存放在“.DBF”表文件中;VFP的数据库文件(“.DBC”)中不存放用户数据,它只起将属于某一数据库的 数据库表与视图、连接、存储过程等关联起来的作用。

数据库系统由4个部分构成:1、数据库,是指长期存储在计算机内的,有组织,可共享的数据的集合;2、硬件,是指构成计算机系统的各种物理设备,包括存储所需的外部设备;3、软件,包括操作系统、数据库管理系统及应用程序;4、人员,包括系统分析员和数据库设计人员、应用程序员(负责编写使用数据库的应用程序)、最终用户(利用接口或查询语言访问数据库)、数据库管理员(负责数据库的总体信息控制)。

microsoft sql server是Microsoft公司推出的关系型数据库管理系统,是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理,具有使用方便可伸缩性好与相关软件集成程度高等优点。SQL Server数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使用户可以构建和管理用于业务的高可用和高性能的数据应用程序。

结构层次是“数据库→数据表→记录→字段”;字段构成记录,记录构成数据表,数据表构成了数据库。数据库是一个完整的数据的记录的整体,一个数据库包含0到N个表,一个表包含0到N个字段,记录是表中的行。

go语言可以写数据库。Go语言和其他语言不同的地方是,Go官方没有提供数据库驱动,而是编写了开发数据库驱动的标准接口,开发者可以根据定义的接口来开发相应的数据库驱动;这样做的好处在于,只要是按照标准接口开发的代码,以后迁移数据库时,不需要做任何修改,极大方便了后期的架构调整。

mysql查询为什么会慢,关于这个问题,在实际开发经常会遇到,而面试中,也是个高频题。遇到这种问题,我们一般也会想到是因为索引。那除开索引之外,还有哪些因素会导致数据库查询变慢呢?


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。