दिलचस्प पोस्ट
जावा लैम्डा स्ट्रीम () विशिष्ट मनमानी कुंजी पर? डब्ल्यू चार्ज, एन्कोडिंग्स, स्टैंडर्ड और पोर्टेबिलिटी सामान्य संख्या के लिए एक फ़ंक्शन कैसे लिखूँ? कैसे काम करता है इष्ट, स्थिर और स्वस्थ कुंजीशब्द प्रभाव व्यवहार? सी # विंडोज फॉर्म एप्लीकेशन – जीयूआई को दूसरे थ्रेड और क्लास से अपडेट करना है? जावास्क्रिप्ट में पालिंड्रोम चेक मैं Windows पर NODE_ENV = उत्पादन कैसे सेट कर सकता हूं? एक सेग्यू प्रोग्रामेटिक रूप से बनाना नेटवर्क साझा ड्राइव पर फ़ाइल की प्रतिलिपि बनाएँ एमडी 5 के पहले कितने यादृच्छिक तत्व टकराव पैदा करते हैं? JQuery में दो टैग्स के बीच की सभी सामग्री का चयन कैसे करें यूआरएल एन्कोडिंग सी # का उपयोग कर जावा में तर्क के साथ सिंगलटन Xcode UI टेस्ट उदाहरण जावा प्रतिबिंब: घोषणा आदेश में फ़ील्ड और तरीके प्राप्त करना

MySQL अपडेट क्वेरी में वृद्धि मूल्य

मैंने 1 अंक देने के लिए यह कोड बना दिया है, लेकिन यह ठीक से काम नहीं करता है।

mysql_query(" UPDATE member_profile SET points= ' ".$points." ' + 1 WHERE user_id = '".$userid."' "); 

$ अंक वैरिएबल यूज़र के अंक अभी है .. मैं इसे एक से अधिक करना चाहता हूं .. उदाहरण के लिए अगर उसे 5 अंक पसंद हैं, तो यह 5 + 1 = 6 होना चाहिए .. लेकिन यह नहीं है, यह सिर्फ बदलाव करता है 1 से

मैंने क्या गल्त किया है? धन्यवाद

Solutions Collecting From Web of "MySQL अपडेट क्वेरी में वृद्धि मूल्य"

आप यह भी कर सकते हैं:

 mysql_query(" UPDATE member_profile SET points = points + 1 WHERE user_id = '".$userid."' "); 

वास्तविक बिंदुओं की क्वेरी के बिना आप ऐसा कर सकते हैं, इसलिए यह स्क्रिप्ट निष्पादन के दौरान आपको कुछ समय और संसाधनों को बचाएगा।

 mysql_query("UPDATE `member_profile` SET `points`= `points` + 1 WHERE `user_id` = '".intval($userid)."'"); 

अन्यथा, जो आप गलत कर रहे थे वह है कि आप पुराने अंकों की संख्या को एक स्ट्रिंग ( points='5'+1 ) के रूप में पारित करते हैं, और आप स्ट्रिंग के लिए संख्या जोड़ नहीं सकते हैं। 😉

आशा है कि मैं अपनी पहली पोस्ट पर ऑफोचिक नहीं जा रहा हूं, लेकिन मैं स्ट्रिंग के पूर्णांक के कास्टिंग पर थोड़ा विस्तार करना चाहता हूं क्योंकि कुछ उत्तरदाताओं के पास यह गलत है।

चूंकि इस क्वेरी में अभिव्यक्ति एक अंकगणितीय ऑपरेटर (प्लस प्रतीक +) का उपयोग करता है, इसलिए MySQL अभिव्यक्ति में किसी स्ट्रिंग को संख्याओं में बदल देगा।

प्रदर्शित करने के लिए, निम्न परिणाम 6 का उत्पादन करेगा:

 SELECT ' 05.05 '+'.95'; 

माइस् SQL में स्ट्रिंग कन्टेनटेनेशन को कोंकैट () फ़ंक्शन की आवश्यकता होती है, इसलिए इसमें कोई अस्पष्टता नहीं है और MySQL स्ट्रिंग को फ़्लोट्स में कनवर्ट करती है और उन्हें एक साथ जोड़ती है

मुझे वास्तव में लगता है कि आरंभिक क्वेरी काम नहीं कर रही थी, यह सबसे अधिक संभावना है क्योंकि $ अंक वैरिएबल वास्तव में उपयोगकर्ता के मौजूदा अंक पर सेट नहीं था। यह या तो शून्य पर सेट था, या इसे अनसेट नहीं किया गया था: MySQL शून्य के लिए एक खाली स्ट्रिंग डाली जाएगी चित्रण के लिए, निम्नलिखित वापस आ जाएगा 0:

 SELECT ABS(''); 

जैसे मैंने कहा, मुझे आशा है कि मैं बहुत दूर विषय नहीं रहा हूं। मैं मानता हूं कि इस खास समस्या के लिए दान और टॉमस का सबसे अच्छा समाधान है

इसके अलावा, "वृद्धि" स्ट्रिंग के लिए, जब अपडेट, CONCAT उपयोग CONCAT

 update dbo.test set foo=CONCAT(foo, 'bar') where 1=1 
 "UPDATE member_profile SET points = points + 1 WHERE user_id = '".$userid."'" 

कौन स्ट्रिंग और संख्याओं को अद्यतन करने की जरूरत है SET @a = 0; UPDATE obj_disposition SET CODE = CONCAT('CD_', @a:=@a+1); SET @a = 0; UPDATE obj_disposition SET CODE = CONCAT('CD_', @a:=@a+1);

point आसपास ' निकालें:

 mysql_query("UPDATE member_profile SET points=".$points."+1 WHERE user_id = '".$userid."'"); 

आप अपनी मूल क्वेरी में स्ट्रिंग के लिए एक पूर्णांक मान "कास्टिंग" कर रहे हैं …

आप PHP को काम क्यों नहीं करते हैं?

 "UPDATE member_profile SET points= ' ". ($points+1) ." ' WHERE user_id = '".$userid."'" 

एसक्यूएल इंजेक्शन जोखिम को रोकने के लिए आपको पीडीओ का इस्तेमाल करना चाहिए।

आप इस तरह डीबी से जुड़ सकते हैं:

 try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=xxxx;dbname=xxxx', 'user', 'password', $pdo_options); $bdd->query('SET NAMES "utf8"'); } catch (PDOException $e) { exit('Error'); } 

बिंदुओं की संख्या प्राप्त करने के लिए डीबी को क्वेरी करने की आवश्यकता नहीं है। आप अपडेट क्वेरी में सीधे बढ़ा सकते हैं ( points = points + 1 )।

(ध्यान दें: इसके अलावा, यह PHP के साथ मूल्य बढ़ाने के लिए एक अच्छा विचार नहीं है क्योंकि आपको पहले डेटा का चयन करना होगा और यदि अन्य उपयोगकर्ता इसे अपडेट करते हैं तो मान बदल सकता है।)

 $req = $bdd->prepare('UPDATE member_profile SET points = points + 1 WHERE user_id = :user_id'); $req->execute(array( 'user_id' => $userid ));