2012-06-30 19 views
13

PHP संस्करण 5.3 PDO_MYSQL ड्राइवर PDO_MYSQLND के पक्ष में बंद कर दिया गया है। इसने कई प्रश्नों के लिए समर्थन प्रस्तुत किया।पीडीओ एकाधिक प्रश्न

हालांकि, मैं यह नहीं समझ सकता कि एक से अधिक SELECT क्वेरी पारित होने पर दोनों परिणाम सेट कैसे प्राप्त करें। दोनों प्रश्नों को निष्पादित कर दिया गया है, यह नहीं हो सकता कि दूसरा वाला सिर्फ डंप हो गया था।

$db->query("SELECT 1; SELECT 2;")->fetchAll(PDO::FETCH_ASSOC); 

रिटर्न:

array(1) { 
    [0]=> 
    array(1) { 
    [1]=> 
    string(1) "1" 
    } 
} 
+0

एकाधिक प्रश्नों (पीडीओ_MYSQL, PDO_MYSQLND) के लिए पीडीओ समर्थन के संभावित डुप्लिकेट (http://stackoverflow.com/questions/6346674/pdo-support-for-multiple-queries-pdo-mysql-pdo-mysqlnd) –

+0

@ फ्रैंकिसएविला यह भी मेरा प्रश्न है और एक डुप्लिकेट नहीं है। मुझे जवाब मिला। एक सेकंड में पोस्ट करेंगे। – Gajus

उत्तर

20

ऐसा लगता है कि आप PDOStatement::nextRowset उपयोग करने के लिए की जरूरत है।

$stmt = $db->query("SELECT 1; SELECT 2;"); 
$stmt->nextRowset(); 
var_dump($stmt->fetchAll(PDO::FETCH_ASSOC)); 

यह दूसरी क्वेरी के लिए परिणाम लौटाएगा।

यह थोड़ा अजीब कार्यान्वयन है। यह निश्चित रूप से आसान होगा यदि बहु-क्वेरी कथन केवल एक सरणी के नीचे दोनों परिणाम सेट लौटाएगा। हालांकि, लाभ यह है कि यह कार्यान्वयन अलग-अलग FETCH styles का उपयोग करके प्रत्येक क्वेरी को लाने की अनुमति देता है।

संबंधित मुद्दे