2013-02-22 43 views
10

मैं क्वेरी में परिवर्तनीय मानों को सुरक्षित रूप से पास करने के लिए एक कथन तैयार करने के लिए mysqli का उपयोग करने का प्रयास कर रहा हूं। यह सब मेरे लिए काम कर रहा है, लेकिन जिस समस्या में मैं दौड़ रहा हूं वह एक सहयोगी सरणी में परिणाम प्राप्त कर रहा है। यहाँ मेरी संरचना अब तक बताया गया है:PHP mysqli - एक तैयार कथन से एक एसोसिएटिव सरणी वापस करें

$query = $c->stmt_init(); 
$query->prepare("SELECT e._id,e.description,e.eventDate,e.eventTime,e.address,e.locationDescription,i.guestId,r.guestId IS NOT NULL AS 'RSVP-ed' FROM eventList AS e JOIN inviteList AS i ON e._id = i.eventId LEFT JOIN rsvpList AS r ON r.eventId = e._id AND i.guestId = r.guestId JOIN guestList AS g ON g._id = i.guestId WHERE g.groupName = ?"); 
$query->bind_param('s',$groupName); 
if ($result = $query->execute()){ 
    $a = $result->fetch_array(MYSQLI_ASSOC); // this doesn't work :/ 
} else{ 
    error_log ("Didn't work"); 
} 

आप देख सकते हैं, मैं कॉलम का एक बहुत वापस तो मैं उन्हें एक एक चर करने के लिए बाध्य करने की जरूरत नहीं करना चाहते हैं पारित कर दिया हो रही है।

उस पर, अंतिम लक्ष्य एक जेसन एन्कोडेड एसोसिएटिव सरणी को मेरे शेष एप्लिकेशन में वापस पास करना है।

मैंने php दस्तावेज़ीकरण और स्टैक एक्सचेंज पर समस्या देखी है और मुझे सुझाव मिल गए हैं, लेकिन मुझे उन्हें काम पर नहीं लग रहा है। क्या कोई हाथ उधार दे सकता है ??

उत्तर

16

आप MySql मूल निवासी चालक विस्तार (mysqlnd) है, तो आप एक ResultSet प्राप्त करने के लिए get_result विधि का उपयोग कर सकते हैं, और फिर इसे से ला नहीं हमेशा की तरह:

$query = $c->prepare("SELECT e._id,e.description,e.eventDate,e.eventTime,e.address,e.locationDescription,i.guestId,r.guestId IS NOT NULL AS 'RSVP-ed' FROM eventList AS e JOIN inviteList AS i ON e._id = i.eventId LEFT JOIN rsvpList AS r ON r.eventId = e._id AND i.guestId = r.guestId JOIN guestList AS g ON g._id = i.guestId WHERE g.groupName = ?"); 
$query->bind_param('s',$groupName); 
$query->execute(); 
$result = $query->get_result(); 
$a = $result->fetch_array(MYSQLI_ASSOC); // this does work :) 
+1

बहुत बढ़िया, कि काम किया है और एक साहचर्य लौटे सरणी, लेकिन यह केवल क्वेरी की पहली पंक्ति लौट रहा है। क्या मुझे इसे पंक्तियों को खींचने और उन्हें एक नई सरणी में डालने के लिए फ़ोरैच लूप में रखना होगा ?? –

+2

@ChrisSchmitz हाँ, बस लूप 'जबकि ($ पंक्ति = $ परिणाम-> fetch_array (MYSQLI_ASSOC)) {var_dump ($ पंक्ति); }; ' –

+4

यह केवल mysqlnd के साथ उपलब्ध है – greg

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

  • कोई संबंधित समस्या नहीं^_^