2009-08-08 6 views
5

मैं PHP और MySQL का उपयोग कर रहा हूं।mysql और php में डुप्लिकेट अद्यतन पर डालने का उपयोग करते समय अंतिम ऑपरेशन डालने या अपडेट करने के बारे में कैसे पता चलेगा?

यदि मैं INSERT ON DUPLICATE UPDATE SQL कथन का उपयोग करता हूं, तो मुझे कैसे पता चलेगा कि अंतिम ऑपरेशन सफल सफल था या नहीं, अद्यतन या असफल प्रविष्टि?

धारणाएं हैं कि प्रश्न में तालिका ऑटो वृद्धि का उपयोग नहीं करती है, इसलिए मैं खोजने में मेरी सहायता के लिए mysql_insert_id का उपयोग नहीं कर सकता।

उत्तर

8

आप mysql_affected_rows() को देखना चाहते हैं जो एक प्रविष्टि पर 1 और अपडेट पर 2 लौटाएगा। mysql documentation के अनुसार।

if (mysql_affected_rows() == 1) //INSERT 
elseif (mysql_affected_row() == 2) //UPDATE 

जब तक अद्यतन कुछ भी है, जो मामले में यह वापस आ जाएगी 0.

+0

mysql_affected_rows() वास्तव में 2 अद्यतन पर वापसी होगी परिवर्तन नहीं करता है? –

+0

मैंने कई परीक्षण चलाए और यह हर बार मेरे लिए एक डालने की बजाय अद्यतन करने के लिए वापस आया। चाहे मैं एक कॉलम या सभी कॉलम अपडेट कर रहा था। मुझे लगता है कि यह कारण मैंने कहा है, लेकिन मुझे पूरी तरह से यकीन नहीं है। – Cahlroisse

+3

यह http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html पर प्रलेखित कुंजी अपडेट के साथ प्रलेखित है, प्रति पंक्ति प्रभावित प्रभावित पंक्ति 1 है यदि पंक्ति है एक नई पंक्ति के रूप में डाला गया और 2 यदि कोई मौजूदा पंक्ति अद्यतन हो। – dmercredi

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