Heim >Backend-Entwicklung >PHP-Tutorial >Bedienungsanleitung für die Datenbank Yii 11.17
Dieser Artikel stellt die Bedienungsanleitung zur Yii 11.17-Datenbank vor, die einen gewissen Referenzwert hat. Jetzt kann ich sie mit allen Freunden teilen, die sie brauchen.
Beispiel:
#1. Um eine Datenbankverbindung herzustellen, können Sie try...catch verwenden, um möglicherweise ausgelöste Ausnahmen abzufangen
#$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
#Ändern Sie den Alias in der Konfigurationsdatei
$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;
# Dann verwenden Sie diese Methode, um eine Verbindung herzustellen, und wir können über
array( 'components'=>array( 'db'=>array( 'class'=>'CDbConnection', 'connectionString'=>'mysql:host=localhost;dbname=testdb', 'username'=>'root', 'password'=>'password', 'emulatePrepare'=>true, // needed by some MySQL installations ), ), )
# auf die Datenbankverbindung zugreifen. Es wird automatisch aktiviert, es sei denn, wir konfigurieren
# CDbConnection::autoConnect ausdrücklich auf „false“.
# Auf diese Weise kann diese einzelne DB-Verbindung an vielen Stellen in unserem Code gemeinsam genutzt werden.
# Wenn nicht, müssen Sie möglicherweise explizit eine Verbindung herstellen:
# $connection=new CDbConnection($dsn,$username,$password);
$connection = Yii::app()->db
$connection->active=true; # 建立链接之后active为true;
#Run SQL
$connection->active=false; # 关闭连接
#SQL-Änderung
$command->text = $newSQL;
##################### # ################################
#execute()-Methode wird verwendet, um INSERT, UPDATE und DELETE auszuführen .
Bei Erfolg wird die Anzahl der von dieser Ausführung betroffenen Zeilen zurückgegeben.
Die Methode #query() führt eine SQL-Anweisung aus, die mehrere Datenzeilen zurückgibt, z. B. SELECT.
#Bei Erfolg wird eine CDbDataReader-Instanz zurückgegeben, über die die Ergebnisdatenzeilen durchlaufen werden können.
#Der Einfachheit halber implementiert (Yii) auch eine Reihe von queryXXX()-Methoden, um Abfrageergebnisse direkt zurückzugeben
#Wenn in SQL ein Fehler auftritt, wird eine Ausnahme ausgelöst. .
$command=$connection->createCommand($sql);
################################### ## ###############
#Abfrageergebnisse abrufen
#Nach dem Generieren von CDbDataReader
#CDbDataReader::read() wiederholt aufrufen
#Sie können auch CDbDataReader verwenden
####zum Beispiel in der foreach-Sprachstruktur 🎜>( ($row = $dataReader->read()) !== false) { ... }
#Methode 2 Verwenden Sie foreach zum Durchlaufen jede Zeile in den Daten
foreach
($dataReader as $row) { ... }#Methode 3 Alle Zeilen auf einmal in ein Array extrahieren$rows = $dataReader- >readAll();
#Hinweis:
#Alle queryXXX()-Methoden geben Daten direkt zurück#query() nicht, es gibt eine Instanz von CDbDataReader zurück#Transaktionen verwenden
$rowCount = $command->execute(); # 执行无查询 SQL $dataReader = $command->query(); # 执行一个 SQL 查询 $rows = $command->queryAll(); # 查询并返回结果中的所有行 $row = $command->queryRow(); # 查询并返回结果中的第一行 $column = $command->queryColumn(); # 查询并返回结果中的第一列 $value = $command->queryScalar(); # 查询并返回结果中第一行的第一个字段
#Ein SQL mit zwei Platzhaltern „:username“ und „:email“
$dataReader = $command->query();
$transaction= $connection->beginTransaction(); try { $connection->createCommand($sql1)->execute(); $connection->createCommand($sql2)->execute(); #其他 $transaction->commit(); } catch(Exception $e) # 如果有一条查询失败,则会抛出异常 { $transaction->rollBack(); #回滚 }
$sql="INSERT INTO tbl_user (username, email) VALUES(:username,:email)"; $command = $connection->createCommand($sql);
#Bei wiederholter Ausführung derselben Logik
#Verwenden Sie den neuen Parametersatz, der in eine andere Zeile eingefügt wird
$command->bindParam(":username", $username, PDO::PARAM_STR);
# und Letzteres einen Wert verwendet. Für Parameter mit großen Datenblöcken im Speicher sollte aus Leistungsgründen zuerst Ersteres verwendet werden.
########################################## #######
#Spalte binden
$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();
$sql="SELECT username, email FROM tbl_user"; $dataReader=$connection->createCommand($sql)->query();
while
{
#$username und $email enthalten den Benutzernamen und die E-Mail-Adresse in der aktuellen Zeile
}############ # #########################################Tabellenpräfix verwenden
#Konfigurieren Sie das CDbConnection::tablePrefix-Attribut auf das gewünschte Tabellenpräfix.
$dataReader->bindColumn(1,$username);
$dataReader->bindColumn(2,$email);
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'=>"表前缀_" ), ), )
$params array An diese Abfrage gebundene Parameter (name=>value)
{return} CDbCommand .
Der $conditions-Parameter kann eine Zeichenfolge (z. B. „id=1“) oder ein Array sein.
Wenn es sich um Letzteres handelt, muss es das Format Array (Operator, Operand1, Operand2, ...) haben. Der Operator kann einer der folgenden sein, die möglichen Operanden hängen vom entsprechenden Operator ab:
und: Die Operanden sollten mit UND verknüpft werden.
Zum Beispiel:
array('and', 'id=1', 'id=2')
generiert
'id=1 AND id=2'. Wenn ein Operand ein Array ist, wird er nach denselben hier beschriebenen Regeln in einen String konvertiert. Beispiel:
array('and', 'type=1', array('or', 'id=1', 'id=2'))
generiert
'type=1 AND ( id=1 OR id=2)'
Diese Methode führt keine Anführungszeichen oder Escapezeichen aus.
Oder: Ähnlich dem Und-Operator, mit der Ausnahme, dass die Operanden durch ODER verknüpft werden.
in: Operand 1 sollte eine Spalte oder ein DB-Ausdruck sein, Operand 2 sollte ein Array sein, das den Bereich angibt, in dem der Wert der entsprechenden Spalte oder des entsprechenden DB-Ausdrucks liegen soll.
Zum Beispiel:
array('in', 'id', array(1,2,3))
generiert 'id IN (1,2,3)'
Diese Methode wird korrekt sein Der in Anführungszeichen gesetzte Spaltenname und der maskierte Wert im Bereich.
nicht in: Ähnlich wie in, außer dass IN beim Generieren von Bedingungen durch NOT IN ersetzt wird.
wie: Operand 1 sollte eine Spalte oder ein DB-Ausdruck sein, Operand 2 ist eine Zeichenfolge oder ein Array, das den Wert der Spalte oder des DB-Ausdrucks angibt, der so aussehen sollte.
Zum Beispiel:
array('like', 'name', '%tester%')
generiert
"name LIKE '%tester%'"
wenn der Wertebereich ist Als Array angegeben, werden mehrere LIKE-Prädikate generiert und mit AND verbunden.
Zum Beispiel:
array('like', 'name', array('%test%', '%sample%'))
erzeugt
"name LIKE '%test%' AND name LIKE '%sample%'"
Diese Methode zitiert maskierte Werte in Spaltennamen und -bereichen korrekt.
not like: Ähnlich wie like, außer dass bei der Generierung von Bedingungen NOT LIKE anstelle von LIKE verwendet wird.
oder like: Ähnlich wie like, außer dass OR zum Verbinden von LIKE-Prädikaten verwendet wird.
or not like: Ähnlich wie not like, außer dass OR zum Verbinden von NOT LIKE-Prädikaten verwendet wird.
Verwandte Empfehlungen:
Yii-Multianwendungs-Multimodul
Grundlegende Konzepte der Yii2-Konfiguration
Das obige ist der detaillierte Inhalt vonBedienungsanleitung für die Datenbank Yii 11.17. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!