ठीक है, इसलिए मैं जिस परियोजना पर काम कर रहा हूं उसके लिए मैं PDO wrapper का उपयोग कर रहा हूं, और मैं यह पता लगाने की कोशिश कर रहा हूं कि एक DELETE क्वेरी सफल थी या नहीं।मैं पीडीओ के साथ हटाई गई पंक्तियों की संख्या कैसे प्राप्त कर सकता हूं?
/**
* A pretty straight-forward query to delete a row from the verification
* table where user_id is $user_id and code is $code
*/
$result = $this->database->query("DELETE FROM verification " .
"WHERE user_id = %u AND code = %s",
$user_id,
$code);
/**
* This function will grab the PDO's exec() return, which should
* return the number of rows modified.
*/
if($this->database->getNumAffected($result) > 0)
return true;
else
return false;
समस्या यह है कि क्या वास्तव में हटाने, क्वेरी एक पंक्ति को हटा देता है या नहीं,, $ this-> database-> getNumAffected ($ परिणाम) हमेशा रिटर्न '0': यहाँ कोड मैं का उपयोग कर रहा है।
आप रैपर को देख सकते हैं, लेकिन मूल रूप से यह $-> डेटाबेस-> getNumAffected ($ परिणाम) बस वही मान देता है जो पीडीओ :: exec() वापस आ जाएगा।
मैं आवरण के बिना इस कोड की कोशिश की (सीधे पीडीओ में,) और मैं एक ही समस्या थी लेकिन रिवर्स: यह हमेशा वापस आ '1' (। है कि पंक्ति या नष्ट कर दिया गया नहीं)
किसी भी मदद होगी अत्यधिक सराहनीय।
संपादित करें: this पर आधारित SO सवाल, मैं सब ठीक कर रहा हूं ... मुझे समझ में नहीं आता कि यह क्यों काम नहीं कर रहा है।
मुझे यकीन नहीं है कि इसका मतलब क्या है आप exec() का उपयोग नहीं करते हैं, Ctrl + F दबाएं और निष्पादित करें (। उत्तर के लिए धन्यवाद। –
मेरा मतलब है कि यह पीडीओ :: exec() का उपयोग नहीं करता है, लेकिन PDOStatement :: execute() का उपयोग करता है, जो एक पूरी तरह से अलग बात है। यह शायद php.net/pdo पर जाने के लिए उपयोगी होगा और पीडीओ ऑब्जेक्ट (और इसकी 'exec()' विधि) के बीच अंतर सीखें और PDOStatement ऑब्जेक्ट (और इसकी 'execute()' विधि)। वहाँ कुछ वास्तव में महत्वपूर्ण अंतर हैं। – TML
आह, ठीक है, यह समझ में आता है। उत्तर के लिए बहुत बहुत धन्यवाद, और मैं उस पर ध्यान दूंगा। मुझे नहीं पता पीडीओ के बारे में बहुत कुछ, जब मैंने इसे सीखना शुरू किया (जिसे इस रैपर बनाने वाले व्यक्ति द्वारा प्रेरित किया गया था), मुझे तुरंत इसके लिए उपयोग करने के लिए एक रैपर दिया गया था। मुझे लगता है कि रैपर का एकमात्र लाभ यह है कि आपको चर टाइप करना है, इसलिए यदि यह गलत प्रकार है (उदाहरण के लिए एक स्ट्रिंग जब यह एक पूर्णांक होना चाहिए,) यह एक त्रुटि देता है। ओह, मुझे यह मेरी पहली टिप्पणी में कहना था: मैं समझता हूं कि numRows() rowCount() से बहुत अलग है, और जिस तरह से numRows() काम करता है, मैं इसका उपयोग नहीं करता हूं। –