मैं कैसे अपडेट करूं कि मेरा अपडेट सफल है या नहीं? मैं एक अद्वितीय नाम = नाम का उपयोग करके अद्यतन करता हूं इसलिए मुझे हमेशा 0 पंक्तियों या 1 को अपडेट करना चाहिए। यह जांचने का एक अच्छा तरीका क्या है कि मैंने एक पंक्ति अद्यतन की है या नहीं?पंक्तियां PHP के साथ mysql अद्यतन में प्रभावित
उत्तर
mysql_affected_rows()
आपके अपडेट से प्रभावित पंक्तियों की संख्या वापस कर देगा।
http://us.php.net/manual/en/function.mysql-affected-rows.php
mysql_affected_rows
का उपयोग करें।
इस 0 वापस कर सकती है अगर क्वेरी में अपडेट किया गया डेटा पहले से ही डेटाबेस में जैसा ही है, इसलिए क्वेरी सफल होने पर भी 0 वापस आ सकती है लेकिन 0 पंक्तियां बदली गईं। लेकिन मुझे लगता है कि आपके उपयोग के मामले में यह परिदृश्य नहीं होगा। – andho
यह लागू हो सकता है, लेकिन यदि आपने शायद "$ query = mysql_query ($ sql) लिखा है;", तो "$ क्वेरी" में "1" होगा यदि यह सफल होता है, तो अन्यथा। – NessDan
अपने अद्यतन क्वेरी एक चर नामित $ क्वेरी में है, तो आप कर सकते हैं;
$result = mysql_query($query);
if($result){
//succes!
} else {
//fail!
}
उम्मीद है कि इससे मदद मिलती है। अगर आप जानना चाहते हैं कि आपकी क्वेरी सफलतापूर्वक निष्पादित की गई है, तो यह होगा। यदि आप वास्तव में जानना चाहते हैं कि कितनी पंक्तियां प्रभावित होती हैं, तो अन्य सुझावों का उपयोग करें।
यदि क्वेरी खराब हो गई तो यह केवल 'झूठी' वापस आ जाएगी। यहां तक कि अगर 'अद्यतन' शून्य पंक्तियों पर चल रहा है, तो यह "सफलता" दिखाएगा! – brianreavis
यह केवल आपको बताएगा कि क्वेरी सफलतापूर्वक निष्पादित की गई थी, न कि कितनी पंक्तियां प्रभावित हुईं। –
वास्तव में यह जानने का कोई तरीका है का उपयोग करें। मान लें कि तालिका tbl_numbers (आईडी, मान) पंक्तियां (1, "एक") और (2, "दो") है;
$result1="update tbl_numbers set value='first' where id=1";
आप अगर यह सच खंड और mysql_affected_rows रिटर्न में $ result2 (चेक करते हैं आप अगर यह सच खंड और mysql_affected_rows() रिटर्न 1.
हालांकि रिटर्न में $ result1, $result2="update tbl_numbers set value='two' where id=2";
के लिए जांच) रिटर्न 0.
और $result3="update tbl_numbers set value='three' where id=3";
आप अगर यह सच खंड और mysql_affected_rows() रिटर्न में $ result3 जांच के लिए, रिटर्न 0.
यह सहायक है .. धन्यवाद – hriziya
तो क्या हुआ अगर उपयोगकर्ता डेटा को पुनः सबमिट करता है जो पहले से ही डीबी में जानकारी के समान है? अगर स्मृति कार्य करता है जो 0 के मान के साथ mysql_affected_rows() को वापस कर देगा क्योंकि परिभाषा के अनुसार प्रक्रिया में कोई पंक्तियां अपडेट नहीं की गई थीं। फिर भी सवाल स्वयं सफल रहा।
यह करने के लिए वैकल्पिक हल प्रविष्टि से पहले या तो सबूत अपनी सामग्री या उपयोग करने के लिए होगा:
$result = mysql_query($q);
if(mysql_affected_rows() == 0)
$state = $result ? "Success" : "Fail";
इस तरह अगर पंक्तियों अपडेट किए गए थे आप की जाँच करने के लिए मिलता है और आप देख सकते हैं कि नहीं अगर यह एक खराबी थी या बस डेटा दोहराएं।
4 संभावित परिणाम: खराबी, डेटा अपडेट, डेटा दोहराएं, या कुंजी नहीं मिली। दुर्भाग्यवश त्रुटियों की जांच करने से आपको उस कुंजी के बीच अंतर करने में मदद नहीं मिलेगी जो डेटा नहीं मिला और डेटा दोहराया गया है। –
मुझे बहुत देर हो चुकी है, लेकिन आप हमेशा अपनी क्वेरी को बदलकर किसी भी मैच में विफलता को मजबूर कर सकते हैं।
कॉलम 'आईडी' और 'मान' के साथ तालिका 'foo' के लिए। मैच अभिव्यक्ति: आईडी = 4
update foo
join (select ID as nearID,
ID = 4
as matched from foo order by matched desc limit 0, 1) as t on nearID = ID
set value='somedata2'
, ID = if(matched, nearID, 'nomatch')
यह शायद सिर्फ तालिका को बदलने के लिए या तो एक अद्यतन टाइमस्टैम्प या क्रम संख्या के बजाय हालांकि शामिल करने के लिए आसान है। (क्योंकि वे प्रत्येक अपडेट पर बदल जाएंगे)
mysql_affected_rows ($ link) सही है लेकिन अवमूल्यन .. mysqli_affected_rows ($ link) अब उपयोग किया जाना चाहिए।
पीडीओ का उपयोग कर रहे हैं, तो प्रभावित पंक्तियों के रूप में नीचे rowCount() समारोह का उपयोग कर प्राप्त किया जा सकता है:
/* Delete all rows from the FRUIT table */
$del = $dbh->prepare('DELETE FROM fruit');
$del->execute();
/* Return number of rows that were deleted */
print("Return number of rows that were deleted:\n");
$count = $del->rowCount();
print("Deleted $count rows.\n");
आप तैयार बयान उपयोग कर रहे हैं ..
//query
$stmt = $conn->prepare("UPDATE user SET name = 'Jack' WHERE id = ?");
//bind parameters
$stmt->bind_param("i", $id);
//execute
$stmt->execute();
//updated row count
echo $stmt->affected_rows;
echo " rows updated";
- 1. रॉ में अद्यतन विवरण द्वारा प्रभावित पंक्तियां plpgsql
- 2. PHP/mysql अद्यतन स्टेटमेंट की प्रभावित पंक्तियों की संख्या
- 3. प्रभावित पंक्तियों के बजाय MySQL में अद्यतन मान प्राप्त करें
- 4. MySQL ऑफ़सेट असीमित पंक्तियां
- 5. php mysql बाँध-परम, कैसे अद्यतन क्वेरी
- 6. {} PHP में एक MySQL क्वेरी को कैसे प्रभावित करता है?
- 7. MySQL के साथ PHP धीमा
- 8. mysql में अद्यतन/हटाएं और प्रभावित पंक्ति आईडी की सूची प्राप्त करें?
- 9. MySQL - एक जुड़ा हुआ सबक्वायरी के साथ कई पंक्तियां डालने?
- 10. mysql अद्यतन
- 11. PHP पीडीओ - न्यू पंक्तियां
- 12. अद्यतन
- 13. अद्यतन mysql
- 14. PHP/MySQL - कैसे को रोकने के लिए दो अनुरोध * अद्यतन
- 15. mysql डेटाबेस तालिका में कितनी पंक्तियां?
- 16. MySQL अद्यतन के बराबर ओरेकल
- 17. MySQL वाक्य रचना के लिए अद्यतन
- 18. स्तंभों में समान मानों के साथ 1000 पंक्तियां कैसे बनाएं?
- 19. MySQL: वापसी अद्यतन पंक्तियों
- 20. अजगर MYSQL अद्यतन बयान
- 21. mysql + अद्यतन शीर्ष n
- 22. MySQL बैच अद्यतन
- 23. mysql अद्यतन आदेश
- 24. MySQL व्याख्या अद्यतन
- 25. "अद्यतन के लिए ... अद्यतन के लिए" हाइबरनेट और MySQL
- 26. MySQL प्रदर्शन हटाएं या अद्यतन करें?
- 27. एक क्वेरी (अद्यतन, सेट और केस) में MySQL अद्यतन स्थितियां
- 28. MySQL अद्यतन सब्सक्रिप्ट
- 29. MySQL अद्यतन कॉलम +1?
- 30. क्या MySQL अद्यतन INSERT से तेज है?
लेकिन सफलता होने पर यह 0 लौटाता है और आप पहले से ही तालिका में समान डेटा डालते हैं। – madlopt