Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैं PHP में PDO के साथ उपयोग करने के लिए MySQL डेटाबेस का चयन कैसे करूं?

जब आप कनेक्ट करते हैं तो आम तौर पर आप डीएसएन में डेटाबेस निर्दिष्ट करेंगे। लेकिन अगर आप एक नया डेटाबेस बना रहे हैं, तो जाहिर है कि आप इसे बनाने से पहले उस डेटाबेस को DSN निर्दिष्ट नहीं कर सकते।

आप अपने डिफ़ॉल्ट डेटाबेस को USE . के साथ बदल सकते हैं कथन:

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

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

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

बाद में CREATE TABLE आपके नए डेटाबेस में स्टेटमेंट बनाए जाएंगे।

@माइक से दोबारा टिप्पणी करें:

मैंने अभी कुछ परीक्षण किए हैं और मुझे ऐसा होता नहीं दिख रहा है। डेटाबेस को बदलना केवल सर्वर पर होता है, और यह क्लाइंट में 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 सत्य है। तो यदि आप कह रहे हैं कि यह विशेषता डेटाबेस बदलने के दुष्प्रभाव के रूप में सत्य पर सेट है, तो इसे काम करना चाहिए।

लेकिन यह काम नहीं करता है -- इसे एक त्रुटि मिलती है "अमान्य पैरामीटर संख्या" जो इंगित करती है कि गैर-एमुलेटेड तैयार कथन प्रभावी रहता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Neo4j स्थापना

  2. mysql अद्वितीय संख्या पीढ़ी

  3. CentOS 6.2 . में MySQL संस्करण को 5.1 से 5.5 तक अपडेट करें

  4. MySQL में info_schema डेटाबेस के बारे में जानकारी

  5. MySQL - कॉलम में अल्पविराम से अलग की गई स्ट्रिंग को सॉर्ट करें