Home Backend Development PHP Tutorial Yii 11.17 database related operation instructions

Yii 11.17 database related operation instructions

Apr 28, 2018 am 11:06 AM
database

The content of this article is about Yii 11.17 database related operation instructions, which has certain reference value. Now I share it with you. Friends in need can refer to it

Example:

$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;
Copy after login

#1. To establish a database connection, you can use try...catch to catch exceptions that may be thrown
#$connection=new CDbConnection($dsn,$username,$password);
# DSN format
# SQLite: sqlite:/path/to/dbfile
# MySQL: mysql:host=localhost;dbname=testdb
# PostgreSQL: pgsql:host=localhost;port=5432;dbname=testdb
# SQL Server: mssql:host=localhost;dbname=testdb
# Oracle: oci:dbname=//localhost:1521/testdb
#Modify the alias in the configuration file

array(
    'components'=>array(
        'db'=>array(
            'class'=>'CDbConnection',
            'connectionString'=>'mysql:host=localhost;dbname=testdb',
            'username'=>'root',
            'password'=>'password',
            'emulatePrepare'=>true,  // needed by some MySQL installations
        ),
    ),
)
Copy after login

# Then use this method to establish a connection, and we can access the database connection through

$connection = Yii::app()->db
Copy after login

#. It is automatically activated unless we specifically configure
# CDbConnection::autoConnect to false.
# In this way, this single DB connection can be shared in many places in our code.
# If not, you may need to explicitly establish a connection:
# $connection=new CDbConnection($dsn,$username,$password);

$connection->active=true;  # 建立链接之后active为true;
Copy after login
$connection->active=false;    # 关闭连接
Copy after login

#Run SQL

$command=$connection->createCommand($sql);
Copy after login

#SQL modification
$command->text = $newSQL;














execute() method is used to execute INSERT, UPDATE and DELETE.
If successful, it will return the number of rows affected by this execution.
#query() method executes a SQL statement that returns several rows of data, such as SELECT. #If successful, it returns a CDbDataReader instance through which the resulting rows of data can be traversed. #For the sake of simplicity, (Yii) also implements a series of queryXXX() methods to directly return query results
#If an error occurs in SQL, an exception will be thrown. .

$rowCount   =    $command->execute();        # 执行无查询 SQL
$dataReader =    $command->query();          # 执行一个 SQL 查询
$rows       =    $command->queryAll();       # 查询并返回结果中的所有行
$row        =    $command->queryRow();       # 查询并返回结果中的第一行
$column     =    $command->queryColumn();    # 查询并返回结果中的第一列
$value      =    $command->queryScalar();    # 查询并返回结果中第一行的第一个字段
Copy after login













Get query results
#After generating CDbDataReader
#Repeatedly call CDbDataReader::read()

#Also CDbDataReader can be used in the foreach language structure


#For example


#

$dataReader = $command->query();
Copy after login

#Method 1 Repeatedly call read() until it returns false

while
( ($row = $dataReader->read()) !== false) { ... }

#Method 2 Use foreach to traverse each row in the data


foreach

($dataReader as $row) { ... }

#Method 3 Extract all rows into an array at once$rows = $dataReader->readAll();#Note:
#All queryXXX() methods will return data directly
#query() will not, but will return an instance of CDbDataReader
#Use transactions

$transaction= $connection->beginTransaction();
try
{
    $connection->createCommand($sql1)->execute();
    $connection->createCommand($sql2)->execute();
    #其他
    $transaction->commit();
}
catch(Exception $e) # 如果有一条查询失败,则会抛出异常
{
    $transaction->rollBack(); #回滚
}
Copy after login












#####Preprocessing (parameter binding) avoids injection and improves the efficiency of repeated executions####Placeholders can be named (appearing as a unique mark) or unnamed (appearing as a question mark). Placeholders will be replaced with actual parameters. ####Call CDbCommand::bindParam() or CDbCommand::bindValue() to replace these placeholders with actual parameters. ####These parameters do not need to be enclosed in quotes: the underlying database driver will handle this for you. This parameter binding must be completed before the SQL statement is executed. ####Example####A SQL with two placeholders ":username" and ":email"######
$sql="INSERT INTO tbl_user (username, email) VALUES(:username,:email)";
$command = $connection->createCommand($sql);
Copy after login
####Replace the placeholder "with the actual username": username"######
$command->bindParam(":username", $username, PDO::PARAM_STR);
Copy after login
####Replace the placeholder ":email" with the actual Email"######
$command->bindParam(":email",$email,PDO::PARAM_STR);
$command->execute();
Copy after login
####When executing the same logic repeatedly####Use the new one Parameter set inserts into another row######
$command->bindParam(":username",$username2,PDO::PARAM_STR);
$command->bindParam(":email",$email2,PDO::PARAM_STR);
$command->execute();
Copy after login
####bindParam() and bindValue() are very similar. ####The only difference is that the former uses a PHP variable to bind parameters, ####and the latter uses a value. For those parameters with large data blocks in memory, for performance reasons, the former should be used first. ################################################ ##############Bind columns######
$sql="SELECT username, email FROM tbl_user";
$dataReader=$connection->createCommand($sql)->query();
Copy after login
####Use the $username variable to bind the first column (username)######
$dataReader->bindColumn(1,$username);
Copy after login
### #Use the $email variable to bind the second column (email)######
$dataReader->bindColumn(2,$email);
Copy after login
######while###($dataReader->read()!==false)###{## # #$username and $email contain the username and email in the current line### #There is no need to assign values ​​to two variables every time###}############### #################################################use Table prefix####Configure the CDbConnection::tablePrefix property to the desired table prefix. ######
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'=>"表前缀_"
        ),
    ),
)
Copy after login
$sql='SELECT * FROM {{user}}';
$users=$connection->createCommand($sql)->queryAll();
Copy after login
#############################
$user = Yii::app()->db->createCommand()
        ->select('username, password')
        ->from('tbl_user')
        ->where('id=:id', array(':id'=>1))
        ->queryRow();
Copy after login
###where() method (available since v1 .1.6) ###public CDbCommand where(mixed $conditions, array $params=array())###$conditions mixed conditions placed in the WHERE part. ###$params         array                                                         use   with                                            . ###This method requires a $conditions parameter and a $params parameter, specifying the value to be bound to the query. ###############

$conditions parameter can be a string (such as 'id=1') or an array.

If it is the latter, it must be in the format array(operator, operand1, operand2, ...), the operator can be one of the following, and the possible operands depend on the corresponding operator:
and: The operands should be connected using AND.
For example:
array('and', 'id=1', 'id=2')
will generate
'id=1 AND id=2'. If an operand is an array, it is converted to a string using the same rules described here. For example:
array('and', 'type=1', array('or', 'id=1', 'id=2'))
will generate
'type=1 AND ( id=1 OR id=2)'
This method will not do any quoting or escaping.
or: Similar to the and operator, except that the operands are connected using OR.
in: Operand 1 should be a column or DB expression, operand 2 should be an array, indicating the range in which the value of the corresponding column or DB expression should be.
For example:
array('in', 'id', array(1,2,3))
will generate 'id IN (1,2,3)'
This method will be correct The quoted column name and the escaped value in the range.
not in: Similar to in, except IN is replaced with NOT IN when generating conditions.
like: Operand 1 should be a column or a DB expression, operand 2 is a string or an array indicating the value of the column or DB expression that should be like.
For example:
array('like', 'name', '%tester%')
will generate
"name LIKE '%tester%'"
When the value range is given As an array, multiple LIKE predicates will be generated and connected using AND.
For example:
array('like', 'name', array('%test%', '%sample%'))
will generate
"name LIKE '%test%' AND name LIKE '%sample%'"
This method will correctly quote escaped values ​​in column names and ranges.
not like: Similar to like, except that NOT LIKE is used instead of LIKE when generating conditions.
or like: Similar to like, except OR is used to connect LIKE predicates.
or not like: Similar to not like, except OR is used to connect NOT LIKE predicates.

Related recommendations:

Details of yii framework

Yii multi-application multi-module

Yii2 configuration basic concepts

The above is the detailed content of Yii 11.17 database related operation instructions. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How does Go language implement the addition, deletion, modification and query operations of the database? How does Go language implement the addition, deletion, modification and query operations of the database? Mar 27, 2024 pm 09:39 PM

Go language is an efficient, concise and easy-to-learn programming language. It is favored by developers because of its advantages in concurrent programming and network programming. In actual development, database operations are an indispensable part. This article will introduce how to use Go language to implement database addition, deletion, modification and query operations. In Go language, we usually use third-party libraries to operate databases, such as commonly used sql packages, gorm, etc. Here we take the sql package as an example to introduce how to implement the addition, deletion, modification and query operations of the database. Assume we are using a MySQL database.

iOS 18 adds a new 'Recovered' album function to retrieve lost or damaged photos iOS 18 adds a new 'Recovered' album function to retrieve lost or damaged photos Jul 18, 2024 am 05:48 AM

Apple's latest releases of iOS18, iPadOS18 and macOS Sequoia systems have added an important feature to the Photos application, designed to help users easily recover photos and videos lost or damaged due to various reasons. The new feature introduces an album called "Recovered" in the Tools section of the Photos app that will automatically appear when a user has pictures or videos on their device that are not part of their photo library. The emergence of the "Recovered" album provides a solution for photos and videos lost due to database corruption, the camera application not saving to the photo library correctly, or a third-party application managing the photo library. Users only need a few simple steps

How does Hibernate implement polymorphic mapping? How does Hibernate implement polymorphic mapping? Apr 17, 2024 pm 12:09 PM

Hibernate polymorphic mapping can map inherited classes to the database and provides the following mapping types: joined-subclass: Create a separate table for the subclass, including all columns of the parent class. table-per-class: Create a separate table for subclasses, containing only subclass-specific columns. union-subclass: similar to joined-subclass, but the parent class table unions all subclass columns.

Detailed tutorial on establishing a database connection using MySQLi in PHP Detailed tutorial on establishing a database connection using MySQLi in PHP Jun 04, 2024 pm 01:42 PM

How to use MySQLi to establish a database connection in PHP: Include MySQLi extension (require_once) Create connection function (functionconnect_to_db) Call connection function ($conn=connect_to_db()) Execute query ($result=$conn->query()) Close connection ( $conn->close())

How to handle database connection errors in PHP How to handle database connection errors in PHP Jun 05, 2024 pm 02:16 PM

To handle database connection errors in PHP, you can use the following steps: Use mysqli_connect_errno() to obtain the error code. Use mysqli_connect_error() to get the error message. By capturing and logging these error messages, database connection issues can be easily identified and resolved, ensuring the smooth running of your application.

An in-depth analysis of how HTML reads the database An in-depth analysis of how HTML reads the database Apr 09, 2024 pm 12:36 PM

HTML cannot read the database directly, but it can be achieved through JavaScript and AJAX. The steps include establishing a database connection, sending a query, processing the response, and updating the page. This article provides a practical example of using JavaScript, AJAX and PHP to read data from a MySQL database, showing how to dynamically display query results in an HTML page. This example uses XMLHttpRequest to establish a database connection, send a query and process the response, thereby filling data into page elements and realizing the function of HTML reading the database.

How to use database callback functions in Golang? How to use database callback functions in Golang? Jun 03, 2024 pm 02:20 PM

Using the database callback function in Golang can achieve: executing custom code after the specified database operation is completed. Add custom behavior through separate functions without writing additional code. Callback functions are available for insert, update, delete, and query operations. You must use the sql.Exec, sql.QueryRow, or sql.Query function to use the callback function.

How to connect to remote database using Golang? How to connect to remote database using Golang? Jun 01, 2024 pm 08:31 PM

Through the Go standard library database/sql package, you can connect to remote databases such as MySQL, PostgreSQL or SQLite: create a connection string containing database connection information. Use the sql.Open() function to open a database connection. Perform database operations such as SQL queries and insert operations. Use defer to close the database connection to release resources.

See all articles