Heim  >  Artikel  >  Backend-Entwicklung  >  Bedienungsanleitung für die Datenbank Yii 11.17

Bedienungsanleitung für die Datenbank Yii 11.17

不言
不言Original
2018-04-28 11:06:101283Durchsuche

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:

rrree

#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();    # 查询并返回结果中第一行的第一个字段

##### ################################### ########## ##
#Vorverarbeitung (Parameterbindung) vermeidet Injektion und verbessert die Effizienz wiederholter Ausführungen
#Platzhalter können benannt (erscheint als eindeutige Markierung) oder unbenannt (erscheint als) sein ein Fragezeichen). Platzhalter werden durch tatsächliche Parameter ersetzt.
#Rufen Sie CDbCommand::bindParam() oder CDbCommand::bindValue() auf, um diese Platzhalter durch tatsächliche Parameter zu ersetzen.
#Diese Parameter müssen nicht in Anführungszeichen gesetzt werden: Der zugrunde liegende Datenbanktreiber übernimmt dies für Sie. Diese Parameterbindung muss abgeschlossen sein, bevor die SQL-Anweisung ausgeführt wird.

#Beispiel

#Ein SQL mit zwei Platzhaltern „:username“ und „:email“

$dataReader = $command->query();

#Ersetzen Sie den Platzhalter „ durch den tatsächlichen Benutzernamen“: username“

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

#Ersetzen Sie den Platzhalter „:email“ durch die tatsächliche E-Mail“

$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);

#bindParam() und bindValue() sind sehr ähnlich.

#Der einzige Unterschied besteht darin, dass Ersteres eine PHP-Variable zum Binden von Parametern verwendet,

# 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();

#Verwenden Sie die Variable $username, um die erste Spalte (Benutzername) zu binden

$command->bindParam(":username",$username2,PDO::PARAM_STR);
$command->bindParam(":email",$email2,PDO::PARAM_STR);
$command->execute();

#Verwenden Sie $email Variable zum Binden der zweiten Spalte (E-Mail)

$sql="SELECT username, email FROM tbl_user";
$dataReader=$connection->createCommand($sql)->query();


while

($dataReader->read()!==false)

{
#$username und $email enthalten den Benutzernamen und die E-Mail-Adresse in der aktuellen Zeile

#Es ist nicht erforderlich, jedes Mal zwei Variablen Werte zuzuweisen

}############ # #########################################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'=>"表前缀_"
        ),
    ),
)

where()-Methode (verfügbar seit Version 1. 1.6)
public CDbCommand where(mixed $conditions, array $params=array())

$conditions gemischte Bedingungen im WHERE-Teil platziert.

$params       array         An diese Abfrage gebundene Parameter (name=>value)
{return}         CDbCommand                                                                                                                                                                                                           .

Diese Methode erfordert einen $conditions-Parameter und einen $params-Parameter, die den Wert angeben, der an die Abfrage gebunden werden soll.





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:

Details zum Yii-Framework

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-Namespace (Namespace)Nächster Artikel:PHP-Namespace (Namespace)