Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để chọn cơ sở dữ liệu MySQL để sử dụng với PDO trong PHP?

Thông thường, bạn sẽ chỉ định cơ sở dữ liệu trong DSN khi bạn kết nối. Nhưng nếu bạn đang tạo một cơ sở dữ liệu mới, rõ ràng là bạn không thể chỉ định cơ sở dữ liệu đó là DSN trước khi tạo.

Bạn có thể thay đổi cơ sở dữ liệu mặc định của mình bằng USE tuyên bố:

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

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

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

Tiếp theo CREATE TABLE các câu lệnh sẽ được tạo trong cơ sở dữ liệu mới của bạn.

Nhận xét lại từ @Mike:

Tôi vừa thực hiện một số bài kiểm tra và tôi không thấy điều đó xảy ra. Thay đổi cơ sở dữ liệu chỉ xảy ra trên máy chủ và nó không thay đổi bất kỳ điều gì về cấu hình của PDO trong máy khách. Đây là một ví dụ:

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

Nếu những gì bạn đang nói là đúng, thì điều này sẽ hoạt động mà không có lỗi. PDO chỉ có thể sử dụng một tham số được đặt tên đã cho nhiều lần nếu PDO ::ATTR_EMULATE_PREPARES là true. Vì vậy, nếu bạn đang nói rằng thuộc tính này được đặt thành true như một tác dụng phụ của việc thay đổi cơ sở dữ liệu, thì nó sẽ hoạt động.

Nhưng nó không hoạt động - nó gặp lỗi "Số tham số không hợp lệ" cho biết rằng các câu lệnh chuẩn bị không được mô phỏng vẫn có hiệu lực.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. lỗi mysql 'TYPE =MyISAM'

  2. CHỌN * TỪ máy chủ MySQL được liên kết

  3. Hệ thống đánh giá trong PHP và MySQL

  4. Sử dụng Moodle tạo người dùng và đăng ký họ vào các khóa học qua SQL

  5. ImportError:Không có mô-đun nào có tên mysql.connector sử dụng Python2