2013-08-30 6 views
9

में कोई भी पंक्ति मैं एक पीडीओ समारोह है जब:मूल्य वापसी पीडीओ

function(){ 
    $success=$this->query($query, $bindvalues); 

    return ($success == true) ? $this->stmt->fetch(PDO::FETCH_ASSOC) : false; 
} 

जब मैं एक का चयन क्वेरी को एक पंक्ति (या अधिक) रिटर्न करते हैं, यह उदाहरण के लिए वापस आ जाएगी:

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

जब क्वेरी विफल हो जाती है (यदि मेरे पास उदाहरण के लिए गलत वाक्यविन्यास है), तो यह गलत होगा।

लेकिन यदि क्वेरी के साथ कोई पंक्ति नहीं मिलती है तो यह गलत भी लौटाती है।

तो क्वेरी में किसी त्रुटि के साथ वापसी मूल्य और कोई पंक्तियों के साथ दोनों FALSE वापस आ जाएंगे। वो कैसे संभव है? मुझे क्वेरी में कोई त्रुटि होने पर केवल FALSE को वापस करने की आवश्यकता है, और मुझे कोई परिणाम नहीं होने पर उदाहरण के लिए NULL वापस करने की आवश्यकता है। क्या मेरे काम में कुछ गड़बड़ है?

धन्यवाद!

+1

यह मैनुअल पढ़ने की मदद करता है: http://php.net/manual/en/pdostatement.fetch.php#refsect1-pdostatement। fetch-returnvalues ​​ – deceze

उत्तर

13

यदि कोई पंक्ति नहीं मिली तो पीडीओ :: fetch झूठी वापसी करता है। यह सच है। तो अपने समारोह को बदलने:

function(){ 
    $success = $this->query($query, $bindvalues); 
    if(!$success) { 
     //handle error 
     return false; 
    } 
    $rows = $this->stmt->fetch(PDO::FETCH_ASSOC); 
    return $rows ?: null; 
} 
+1

वह बिना किसी परिणाम के 'null' वापस करना चाहता है ... – deceze

+0

@deceze: संकेत के लिए thx। उसे बदल दिया! –

+0

बहुत बहुत धन्यवाद! यह बहुत आसान है, लेकिन मुझे नहीं पता था कि कोई पंक्ति नहीं मिलने पर पीडीओ झूठी वापसी करता है। मुझे लगता है कि MySQL नहीं है? – Jordy

-1

यहां आपको

function fetchRow($query, $bindvalues) 
{ 
    $stmt = $this->query($query, $bindvalues); 
    return $stmt->fetch(); 
} 
+0

जब कोई पंक्ति नहीं है, तो वह 'झूठी' नहीं है, तो वह 'शून्य' वापस करना चाहता है। – PhoneixS

+0

@PhoneixS यह कोई समझ नहीं आता है तो बस इस तरह के एक सनकी खारिज :) –

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