जैसा कि मुझे पता है, PDO_MYSQLND
प्रतिस्थापित PDO_MYSQL
पीएचपी 5.3 में। भ्रमित करने वाली बात यह है कि नाम अभी भी है PDO_MYSQL
. तो अब ND MySQL+PDO के लिए डिफ़ॉल्ट ड्राइवर है।
कुल मिलाकर, एक साथ कई प्रश्नों को निष्पादित करने के लिए आपको आवश्यकता होगी:
- PHP 5.3+
- mysqlnd
- नकली तैयार बयान। सुनिश्चित करें कि
PDO::ATTR_EMULATE_PREPARES
1
. पर सेट है (चूक)। वैकल्पिक रूप से आप तैयार बयानों का उपयोग करने से बच सकते हैं और$pdo->exec
. का उपयोग कर सकते हैं सीधे।
निष्पादन का उपयोग करना
$db = new PDO("mysql:host=localhost;dbname=test", 'root', '');
// works regardless of statements emulation
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
$sql = "
DELETE FROM car;
INSERT INTO car(name, type) VALUES ('car1', 'coupe');
INSERT INTO car(name, type) VALUES ('car2', 'coupe');
";
$db->exec($sql);
बयानों का उपयोग करना
$db = new PDO("mysql:host=localhost;dbname=test", 'root', '');
// works not with the following set to 0. You can comment this line as 1 is default
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
$sql = "
DELETE FROM car;
INSERT INTO car(name, type) VALUES ('car1', 'coupe');
INSERT INTO car(name, type) VALUES ('car2', 'coupe');
";
$stmt = $db->prepare($sql);
$stmt->execute();
एक नोट:
नकली तैयार बयानों का उपयोग करते समय, सुनिश्चित करें कि आपने डीएसएन (5.3.6 से उपलब्ध)। अन्यथा कुछ अजीब एन्कोडिंग का उपयोग करने पर SQL इंजेक्शन की थोड़ी संभावना हो सकती है ।