कोड उदाहरण;पता लगाएं कि पीडीओ-> निष्पादित एक पंक्ति/रिकॉर्ड देता है?
$stmt = $db->prepare('SELECT u.username, u.display_name FROM users u WHERE u.id = :userId');
$stmt->bindValue(':userId', 10);
$stmt->execute();
तैयार करना -> निष्पादित करना। यदि आप सुनिश्चित हैं कि क्वेरी अधिकतम 1 पंक्ति लौटाएगी; क्या यह देखने का एक आसान तरीका है कि क्वेरी ने एक पंक्ति वापस कर दी है? मैं हर किसी को 'rowCount' पर मान्य मानता हूं, लेकिन क्या कोई क्लीनर तरीका नहीं है?
यह आलेख: http://www.christiansouth.com/php/pdo-getting-started-part-2-pdostatement/ राज्य;
सत्य अगर क्वेरी सफल हुई तो गलत था अगर यह नहीं था। यहां स्टम्बल है यदि SQL में कोई त्रुटि है तो यह केवल FALSE को वापस कर देगा। तो यदि SQL मान्य है लेकिन कोई पंक्ति नहीं लौटाता है तो आपको अभी भी एक वास्तविक वापसी मूल्य मिलेगा।
क्या यह कथन सही है? क्योंकि php.net केवल इसके बारे में बात करता है:
विफलता पर सफलता या गलत पर सत्य लौटाता है।
तो, फिर से सवालों के ऊपर रैपिंग:
- यह सच आप मान्य नहीं कर सकता है, तो एक पंक्ति एक बूलियन के रूप में $ stmt (उपरोक्त उदाहरण में) का उपयोग कर वापस आ गया था है?
- क्या इसका कोई समाधान है जो क्लीनर दिखता है तो 'rowCount' अगर किसी में रैप किया गया है?
तो मैं $ उपयोग कर सकते हैं परिणाम = $ stmt-> लाने (पीडीओ :: FETCH_ASSOC); अगर ($ परिणाम) // एक पंक्ति मिली; ? – user1178560
एक खाली परिणाम सेट से प्राप्त करना एक त्रुटि वापस करने जा रहा है। मुझे अभी भी यह नहीं दिख रहा है कि आप ऐसा क्यों करना चाहते हैं, जब आपके पास पंक्ति गणना() – gview
@gview से $ stmt ऑब्जेक्ट में आपके लिए उपलब्ध पंक्ति है, तो खाली परिणाम सेट पर 'fetch' का * परिणाम * क्या है ? (संकेत: यह 'गलत' है।) यह एक खाली परिणाम सेट पर 'execute' के परिणाम से एक * अलग * मुद्दा है (जो वैध क्वेरी होने पर' TRUE' है)! यह विशेष मुद्दा यह जानने के बारे में नहीं है कि सामान्य अर्थ में कितने परिणाम लौटाए गए थे - इस * विशेष क्वेरी/उपयोग * के लिए परिणाम-सेट को 0..1 रिकॉर्ड वापस करने के लिए डिज़ाइन किया गया है (यह एकल कुंजी के साथ एक गैर-जॉइन क्वेरी है चयन)। अब, शायद यह तर्क दिया जा सकता है कि कोड को "सबसे अधिक * एक रिकॉर्ड वापस लौटाया जाना चाहिए", लेकिन .. मैं बस वहां छोड़ दूंगा। –