Cet article présente principalement les didacticiels de configuration de base de données et d'exemples d'opérations SQL dans le framework Yii de PHP. Yii prend en charge la liaison de diverses bases de données. L'article donne principalement des exemples d'utilisation de diverses instructions de requête dans Yii.
Comment connecter le framework php yii à la base de données
Accès à la base de données ( DAO )
Yii inclut une couche d'accès aux données (DAO) construite sur PHP PDO fournit une API unifiée pour différentes bases de données. ActiveRecord fournit des bases de données et des modèles (M, Model) dans MVC, QueryBuilder est utilisé pour. créer des instructions de requête dynamiques. DAO fournit des requêtes SQL simples et efficaces, qui peuvent être utilisées à divers endroits pour interagir avec la base de données
Yii prend en charge les bases de données suivantes par défaut (SGBD) :
MySQLMariaDBSQLitePostgreSQLCUBRID. : Version>= 9.3. (En raison d'un bug dans l'extension PHP PDO, la valeur de référence sera invalide, vous devez donc utiliser 9.3 côté client et côté serveur de CUBRID)OracleMSSQL : Version>
1. Configuration
Pour commencer à utiliser la base de données, vous devez d'abord configurer le composant de connexion à la base de données, ce qui est obtenu en ajoutant le composant db à la configuration de l'application (le "de base " L'application Web est config/web.php), DSN (Data Source Name) est le nom de la source de données, utilisé pour spécifier les informations de la base de données. Comme indiqué ci-dessous :return [ // ... 'components' => [ // ... 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=mydatabase', // MySQL, MariaDB //'dsn' => 'sqlite:/path/to/database/file', // SQLite //'dsn' => 'pgsql:host=localhost;port=5432;dbname=mydatabase', // PostgreSQL //'dsn' => 'cubrid:dbname=demodb;host=localhost;port=33000', // CUBRID //'dsn' => 'sqlsrv:Server=localhost;Database=mydatabase', // MS SQL Server, sqlsrv driver //'dsn' => 'dblib:host=localhost;dbname=mydatabase', // MS SQL Server, dblib driver //'dsn' => 'mssql:host=localhost;dbname=mydatabase', // MS SQL Server, mssql driver //'dsn' => 'oci:dbname=//localhost:1521/mydatabase', // Oracle 'username' => 'root', //数据库用户名 'password' => '', //数据库密码 'charset' => 'utf8', ], ], // ... ];
2. Après avoir configuré le composant de connexion , vous pouvez utiliser la syntaxe suivante pour accéder :
$connection = \Yii::$app->db;Si vous souhaitez vous connecter à la base de données via ODBC, vous devez configurer l'attribut yiidbConnection::driverName, par exemple :
'db' => [ 'class' => 'yii\db\Connection', 'driverName' => 'mysql', 'dsn' => 'odbc:Driver={MySQL};Server=localhost;Database=test', 'username' => 'root', 'password' => '', ],Si vous ne souhaitez pas définir la connexion à la base de données en tant que composant d'application global, vous pouvez la configurer dans le code Utiliser pour l'initialisation directe :
$connection = new \yii\db\Connection([ 'dsn' => $dsn, 'username' => $username, 'password' => $password, ]); $connection->open();
3 Si vous devez exécuter du SQL supplémentaire. requêtes après avoir créé la connexion, vous pouvez ajouter le code suivant au fichier de configuration de l'application :
return [ // ... 'components' => [ // ... 'db' => [ 'class' => 'yii\db\Connection', // ... 'on afterOpen' => function($event) { $event->sender->createCommand("SET time_zone = 'UTC'")->execute(); } ], ], // ... ];Si exécuté Si SQL ne renvoie aucune donnée, vous pouvez utiliser la méthode d'exécution dans la commande :
$command = $connection->createCommand('UPDATE post SET status=1 WHERE id=1'); $command->execute();Vous pouvez utiliser les méthodes d'insertion, de mise à jour et de suppression, qui généreront du SQL approprié en fonction des paramètres et l'exécuteront.
// INSERT $connection->createCommand()->insert('user', [ 'name' => 'Sam', 'age' => 30, ])->execute(); // INSERT 一次插入多行 $connection->createCommand()->batchInsert('user', ['name', 'age'], [ ['Tom', 30], ['Jane', 20], ['Linda', 25], ])->execute(); // UPDATE $connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execute(); // DELETE $connection->createCommand()->delete('user', 'status = 0')->execute();Recommandé : "
Tutoriel YII"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!