Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да избера MySQL база данни за използване с PDO в PHP?

Обикновено бихте посочили базата данни в DSN, когато се свързвате. Но ако създавате нова база данни, очевидно не можете да посочите тази база данни като DSN, преди да я създадете.

Можете да промените вашата база данни по подразбиране с USE изявление:

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

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

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

Следващо CREATE TABLE изявленията ще бъдат създадени във вашата нова база данни.

Повторен коментар от @Mike:

Току що направих някои тестове и не виждам това да се случва. Промяната на базата данни се случва само на сървъра и не променя нищо относно конфигурацията на PDO в клиента. Ето един пример:

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

Ако това, което казвате, е вярно, тогава това трябва да работи без грешка. PDO може да използва даден именуван параметър повече от веднъж само ако PDO::ATTR_EMULATE_PREPARES е истина. Така че, ако казвате, че този атрибут е настроен на true като страничен ефект от промяната на бази данни, тогава трябва да работи.

Но не работи – получава грешка „Невалиден номер на параметър“, което показва, че неемулираните подготвени оператори остават в сила.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Каква е разликата между mysql drop partition и truncate дял

  2. Как да увеличите брояч и да върнете стойността в MySQL

  3. MySQL 'secure-file-priv' не позволява зареждане на файл с данни, дори от разпределената безопасна папка

  4. Как:Почистване на mysql InnoDB машина за съхранение?

  5. mysql показва Брой редове от друга таблица във всеки ред