Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara memilih database MySQL untuk digunakan dengan PDO di PHP?

Biasanya Anda akan menentukan database di DSN saat Anda terhubung. Tetapi jika Anda membuat database baru, jelas Anda tidak dapat menentukan DSN database itu sebelum Anda membuatnya.

Anda dapat mengubah database default Anda dengan USE pernyataan:

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

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

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

CREATE TABLE . berikutnya pernyataan akan dibuat di database baru Anda.

Komentar ulang dari @Mike:

Saya baru saja melakukan beberapa tes dan saya tidak melihat itu terjadi. Mengubah database hanya terjadi di server, dan tidak mengubah apa pun tentang konfigurasi PDO di klien. Ini contohnya:

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

Jika apa yang Anda katakan itu benar, maka ini akan bekerja tanpa kesalahan. PDO dapat menggunakan parameter bernama yang diberikan lebih dari sekali hanya jika PDO::ATTR_EMULATE_PREPARES benar. Jadi, jika Anda mengatakan bahwa atribut ini disetel ke true sebagai efek samping dari mengubah basis data, maka itu akan berfungsi.

Namun tidak berhasil -- muncul kesalahan "Nomor parameter tidak valid" yang menunjukkan bahwa pernyataan siap yang tidak ditiru tetap berlaku.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan MySQL di Flask

  2. Laravel - cara memperbarui seluruh koleksi

  3. Peringatan:mysqli::mysqli():(HY000/1045):Akses ditolak untuk 'database'@'localhost' pengguna (menggunakan kata sandi:NO) di

  4. Apakah utas mysql_insert_id aman?

  5. Masalah Batas Waktu Koneksi MySQL - Aplikasi Grails di Tomcat menggunakan Hibernate dan ORM