Yii 11.17 데이터베이스 관련 작업 지침
이 글에서는 특정 참조 가치가 있는 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
# 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; # 关闭连接
#Run SQL
$command=$connection->createCommand($sql);
#SQL 수정
$command- >text = $newSQL;
################################### # ##############
#execute() 메소드는 INSERT, UPDATE 및 DELETE를 실행하는 데 사용됩니다.
성공하면 이 실행의 영향을 받은 행 수를 반환합니다.
#query() 메서드는 SELECT와 같이 여러 데이터 행을 반환하는 SQL 문을 실행합니다.
#성공하면 데이터의 결과 행을 탐색할 수 있는 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 생성 후
#CDbDataReader::read()를 반복적으로 호출
#foreach 언어 구조에서 CDbDataReader를 사용할 수도 있습니다
####예를 들어 # ###
$dataReader = $command->query();
#방법 1 false가 반환될 때까지 read()를 반복적으로 호출합니다
while( ($row = $dataReader->read()) !== false) { ... }
# 방법 2 foreach를 사용하여 데이터의 각 행을 탐색합니다
foreach($dataReader as $row) { ... }
#방법 3 모든 행을 한 번에 배열로 추출
$rows = $dataReader->readAll() ;
#참고:
#모든 queryXXX() 메서드는 데이터를 직접 반환합니다
#query()는 그렇지 않고 CDbDataReader의 인스턴스를 반환합니다
#트랜잭션 사용
$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"
$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에는 현재 줄의 사용자 이름과 이메일이 포함됩니다
#매번 두 변수에 값을 할당할 필요가 없습니다.
}
######################################## ## #######
#테이블 접두사 사용
#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(혼합 $조건, 배열 $params=array())
$conditions WHERE 부분에 혼합 조건이 배치되었습니다.
$params array 이 쿼리에 바인딩된 매개변수(이름=>값)
{return} CDbCommand 이 명령 개체 자체를 반환합니다.
쿼리의 WHERE를 설정합니다.
이 방법에는 쿼리에 바인딩할 값을 지정하는 $conditions 매개변수와 $params 매개변수가 필요합니다.
$conditions 매개변수는 문자열(예: 'id=1') 또는 배열일 수 있습니다.
후자의 경우 배열 형식(연산자, 피연산자1, 피연산자2, ...)이어야 하며 연산자는 다음 중 하나일 수 있으며 가능한 피연산자는 해당 연산자에 따라 다릅니다.
및: 연산 번호 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: 피연산자가 OR를 사용하여 연결된다는 점을 제외하면 and 연산자와 유사합니다.
in: 피연산자 1은 열 또는 DB 표현식이어야 하고, 피연산자 2는 해당 열 또는 DB 표현식의 값이 있어야 하는 범위를 나타내는 배열이어야 합니다.
예:
array('in', 'id', array(1,2,3))
는 'id IN (1,2,3)'을 생성합니다.
이 메서드는 열 이름과 변환을 올바르게 참조합니다. 범위는 값을 의미합니다.
not in: 조건 생성 시 IN이 NOT IN으로 대체된다는 점을 제외하면 in과 유사합니다.
like: 피연산자 1은 열 또는 DB 표현식이어야 하며, 피연산자 2는 like해야 하는 열 또는 DB 표현식의 값을 나타내는 문자열 또는 배열입니다.
예:
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: OR이 NOT LIKE 조건자를 연결하는 데 사용된다는 점을 제외하면 not like와 유사합니다.
관련 권장사항:
위 내용은 Yii 11.17 데이터베이스 관련 작업 지침의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Go 언어는 효율적이고 간결하며 배우기 쉬운 프로그래밍 언어입니다. 동시 프로그래밍과 네트워크 프로그래밍의 장점 때문에 개발자들이 선호합니다. 실제 개발에서 데이터베이스 작업은 필수적인 부분입니다. 이 기사에서는 Go 언어를 사용하여 데이터베이스 추가, 삭제, 수정 및 쿼리 작업을 구현하는 방법을 소개합니다. Go 언어에서는 일반적으로 사용되는 SQL 패키지, Gorm 등과 같은 타사 라이브러리를 사용하여 데이터베이스를 운영합니다. 여기서는 sql 패키지를 예로 들어 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업을 구현하는 방법을 소개합니다. MySQL 데이터베이스를 사용하고 있다고 가정합니다.

Apple의 최신 iOS18, iPadOS18 및 macOS Sequoia 시스템 릴리스에는 사진 애플리케이션에 중요한 기능이 추가되었습니다. 이 기능은 사용자가 다양한 이유로 손실되거나 손상된 사진과 비디오를 쉽게 복구할 수 있도록 설계되었습니다. 새로운 기능에는 사진 앱의 도구 섹션에 '복구됨'이라는 앨범이 도입되었습니다. 이 앨범은 사용자가 기기에 사진 라이브러리에 포함되지 않은 사진이나 비디오를 가지고 있을 때 자동으로 나타납니다. "복구된" 앨범의 출현은 데이터베이스 손상으로 인해 손실된 사진과 비디오, 사진 라이브러리에 올바르게 저장되지 않은 카메라 응용 프로그램 또는 사진 라이브러리를 관리하는 타사 응용 프로그램에 대한 솔루션을 제공합니다. 사용자는 몇 가지 간단한 단계만 거치면 됩니다.

Hibernate 다형성 매핑은 상속된 클래스를 데이터베이스에 매핑할 수 있으며 다음 매핑 유형을 제공합니다. Join-subclass: 상위 클래스의 모든 열을 포함하여 하위 클래스에 대한 별도의 테이블을 생성합니다. 클래스별 테이블: 하위 클래스별 열만 포함하는 하위 클래스에 대한 별도의 테이블을 만듭니다. Union-subclass: Joined-subclass와 유사하지만 상위 클래스 테이블이 모든 하위 클래스 열을 통합합니다.

MySQLi를 사용하여 PHP에서 데이터베이스 연결을 설정하는 방법: MySQLi 확장 포함(require_once) 연결 함수 생성(functionconnect_to_db) 연결 함수 호출($conn=connect_to_db()) 쿼리 실행($result=$conn->query()) 닫기 연결( $conn->close())

PHP에서 데이터베이스 연결 오류를 처리하려면 다음 단계를 사용할 수 있습니다. mysqli_connect_errno()를 사용하여 오류 코드를 얻습니다. 오류 메시지를 얻으려면 mysqli_connect_error()를 사용하십시오. 이러한 오류 메시지를 캡처하고 기록하면 데이터베이스 연결 문제를 쉽게 식별하고 해결할 수 있어 애플리케이션이 원활하게 실행될 수 있습니다.

HTML은 데이터베이스를 직접 읽을 수 없지만 JavaScript 및 AJAX를 통해 읽을 수 있습니다. 단계에는 데이터베이스 연결 설정, 쿼리 보내기, 응답 처리 및 페이지 업데이트가 포함됩니다. 이 기사에서는 JavaScript, AJAX 및 PHP를 사용하여 MySQL 데이터베이스에서 데이터를 읽는 실제 예제를 제공하고 쿼리 결과를 HTML 페이지에 동적으로 표시하는 방법을 보여줍니다. 이 예제에서는 XMLHttpRequest를 사용하여 데이터베이스 연결을 설정하고 쿼리를 보내고 응답을 처리함으로써 페이지 요소에 데이터를 채우고 데이터베이스를 읽는 HTML 기능을 실현합니다.

PHP는 웹사이트 개발에 널리 사용되는 백엔드 프로그래밍 언어로, 강력한 데이터베이스 운영 기능을 갖추고 있으며 MySQL과 같은 데이터베이스와 상호 작용하는 데 자주 사용됩니다. 그러나 한자 인코딩의 복잡성으로 인해 데이터베이스에서 잘못된 한자를 처리할 때 문제가 자주 발생합니다. 이 기사에서는 잘못된 문자의 일반적인 원인, 솔루션 및 특정 코드 예제를 포함하여 데이터베이스에서 중국어 잘못된 문자를 처리하기 위한 PHP의 기술과 사례를 소개합니다. 문자가 왜곡되는 일반적인 이유는 잘못된 데이터베이스 문자 집합 설정 때문입니다. 데이터베이스를 생성할 때 utf8 또는 u와 같은 올바른 문자 집합을 선택해야 합니다.

Go 표준 라이브러리 데이터베이스/sql 패키지를 통해 MySQL, PostgreSQL 또는 SQLite와 같은 원격 데이터베이스에 연결할 수 있습니다. 데이터베이스 연결 정보가 포함된 연결 문자열을 생성합니다. sql.Open() 함수를 사용하여 데이터베이스 연결을 엽니다. SQL 쿼리 및 삽입 작업과 같은 데이터베이스 작업을 수행합니다. 리소스를 해제하기 위해 defer를 사용하여 데이터베이스 연결을 닫습니다.
