sql >> Databáze >  >> RDS >> Mysql

Jak mohu vybrat databázi MySQL pro použití s ​​PDO v PHP?

Obvykle byste při připojování specifikovali databázi v DSN. Ale pokud vytváříte novou databázi, evidentně nemůžete této databázi zadat DSN, než ji vytvoříte.

Výchozí databázi můžete změnit pomocí USE prohlášení:

$dbh = new PDO("mysql:host=...;dbname=mysql", ...);

$dbh->query("create database newdatabase");

$dbh->query("use newdatabase");

Následující CREATE TABLE výpisy budou vytvořeny ve vaší nové databázi.

Znovu komentář od @Mike:

Udělal jsem pár testů a nevidím, že by se to stalo. Změna databáze se děje pouze na serveru a nemění nic na konfiguraci PDO v klientovi. Zde je příklad:

<?php

// connect to database
try {
    $pdo = new PDO('mysql:host=huey;dbname=test', 'root', 'root');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch(PDOException $err) {
    die($err->getMessage());
}

$stmt = $pdo->prepare("select * from foo WHERE i = :i");
$result = $stmt->execute(array("i"=>123));
print_r($stmt->fetchAll(PDO::FETCH_ASSOC));

$pdo->exec("use test2");

$stmt = $pdo->prepare("select * from foo2 WHERE i = :i AND i = :i");
$result = $stmt->execute(array("i"=>456));
print_r($stmt->fetchAll(PDO::FETCH_ASSOC));

Pokud je pravda, co říkáte, mělo by to fungovat bez chyby. PDO může použít daný pojmenovaný parametr více než jednou, pouze pokud má PDO::ATTR_EMULATE_PREPARES hodnotu true. Pokud tedy říkáte, že tento atribut je nastaven na true jako vedlejší efekt změny databází, pak by to mělo fungovat.

Ale to nefunguje – dostane chybu „Neplatné číslo parametru“, což znamená, že neemulované připravené příkazy zůstávají v platnosti.



  1. Případová studie upgradu hardwaru databázového serveru SQL Server

  2. Jak sečíst řetězec oddělený čárkou v SQL?

  3. Srovnávání spravovaných cloudových řešení PostgreSQL – Google Cloud:Část třetí

  4. Vytvoření clusteru Docker Swarm Cluster ve službě Azure Container Service