mysql - Using PHP/PDO to set a NULL value -
पीएचपी / पीडीओ का उपयोग करना IA ???? एक MySQL (mysql-5.0.96) नामक एक चर को सेट करने का प्रयास कर रहा है? ??? flt_statusâ ???? जिसका डिफ़ॉल्ट सेट है ??? और जिसे INT (5) के रूप में परिभाषित किया गया है, शून्य के लिए।
यहां स्टैक ओवरफ्लो (11692773, 13 9 7777) पर कई थ्रेड हैं जो इस विषय को कवर करते हैं लेकिन उनमें से कोई भी मेरे लिए काम नहीं करता है
मेरा (बहुत संक्षिप्त) कोड इस तरह दिखता है;
$ vs = एक ????: ip, flt_status, sunriseâ ????; $ Match = array (â ????: ipa ???? = & gt ;? $ ipa ????, एक ????: flt_statusâ ???? = & gt; एक ???? अशक्त, पीडीओ :: पैरामाइंट टीएका, ????: सूर्योदय ???? = & gt; एक ???? $ सूर्योदय ????); $ वार्स = आईएपी, फ्लैट_स्टैटस, सनराइज '????; $ sql = "स्केड्स में डालें ($ वार्स) वैल्यू ($ बनाम)"; $ Query = $ db_found- & gt; तैयार ($ sql); $ query- & gt; निष्पादित करें ($ match); मैंने ऊपर की चर्चाओं में उल्लिखित कई तकनीकों का प्रयास किया है और अन्य लोगों ने Google का उपयोग करते हुए पाया है लेकिन हर बार flt_status का मान शून्य के रूप में बाहर आता है ( 0)। मैंने दोनों पीडीओ :: पैराम_एनयूएलएल और पीडीओ :: पैरामाइन्टी का प्रयोग करने की कोशिश की है।
I इस प्रस्तुति में आईपी और सिनरीएस चर को शामिल किया है इसलिए मैं किसी भी उदाहरण को और अधिक अनुभवी PHP / पीडीओ प्रोग्रामर मुझे बताते हैं।
क्या कोई मुझे दिखाता है कि मैं क्या कर रहा हूं?
आप जो पेशकश कर सकते हैं, उसके लिए पहले से धन्यवाद।
आप कई चीजें गलत कर रहे हैं।
$ vs = â ????: ip, flt_status, सूर्योदय ????; सबसे पहले, आप स्पष्ट रूप से सीधे उद्धरण चिह्नों के बजाय स्मार्ट कोट्स का उपयोग कर रहे हैं कोड को सीधे उद्धरण की आवश्यकता होती है।
इसके बाद, आप : prefix से पहले ip डालते हैं, लेकिन आपने अन्य दो नामित पैरामीटर से पहले उस उपसर्ग को छोड़ा था आपको : से पहले प्रत्येक एक की आवश्यकता है। $ match = array (â ????: ipa ???? = & gt ; एक ???? $ ipa ????, एक ????: flt_statusâ ???? = & gt; एक ???? नल, पीडीओ :: पैरामाइंस्ट टीका, एक ????: सूर्योदय ???? = & gt; एक ???? $ सूर्योदय ????); अगला, आपने एक उद्धृत स्ट्रिंग के अंदर null डाल दिया है इससे यह शब्द स्ट्रिंग शाब्दिक होता है जिसमें शब्द 'null' होता है, यह सही नहीं है। ये दो अवधारणाएं अलग हैं, जैसे एक चिकन और कागज के एक टुकड़े के बीच के अंतर पर "चिकन" लिखा है। इसके अलावा, आपको चर के चारों ओर उद्धरण देने की आवश्यकता नहीं है।
इसके अलावा, इसके लिए क्या है, : अपने सरणी की सरणी कुंजी पर उपसर्ग वैकल्पिक हैं पीडीओ के शुरुआती संस्करणों में, वे अनिवार्य थे, लेकिन अब वे नहीं हैं। बृहदान्त्र उपसर्ग को रखने के लिए कोई नुकसान नहीं होता है, मैं सिर्फ आपको बताना चाहता था क्योंकि भविष्य में यह आसान हो सकता है कि किसी अन्य एसोसिएटिव सरणी से पैरामीटर के सरणियों को $ _POST। जैसे < $ वार्स = आईएपी, फ्लैट_स्टैटस, सनराइज '????; स्मार्ट कोट्स के निरंतर उपयोग को छोड़कर यह ठीक है।
$ sql = "skeds ($ vars) मूल्यों (INR) बनायें" ; यहां आप अपने $ vs के साथ परेशानी में आ जाएगा, क्योंकि इसमें केवल एक पैरामीटर प्लेसहोल्डर है, दो सादा स्तंभ नामों के बाद। मूल्यों में कॉलम के नामों को पास करना एसक्यूएल में गैरकानूनी नहीं है, लेकिन ऐसा करने में कोई मतलब नहीं है। <पूर्व> $ query = $ db_found- & gt; तैयार ($ sql); $ query- & gt; निष्पादित करें ($ match); ठीक है, सिवाय इसके कि आप त्रुटियों की जांच नहीं कर रहे हैं जब तक आप अपवाद फेंकने के लिए पीडीओ के गुण को सक्षम नहीं करते हैं, आपको तैयार () और execute () की वापसी की स्थिति की जांच करनी चाहिए क्योंकि वे false अगर कोई त्रुटि है यह PHP डेवलपर्स के बीच सबसे आम गलतियों में से एक रहा है!
यहां बताया गया है कि मैं यह कोड कैसे लिखूंगा।
जैसा कि आप पीडीओ से कनेक्ट होते हैं, अपवादों को सक्षम करें देखें <पूर्व> $ db_found = नया पीडीओ (...); $ Db_found- & gt; सेट विशेषता (पीडीओ :: एटीटीआरएआरएमओडीई, पीडीओ :: ERRMODE_EXCEPTION); फिर इस रूटीन के लिए कोड:
$ placeholders = ": ip,: flt_status,: सूर्योदय"; $ मान = सरणी ('आईपी' = & gt; $ ip, 'flt_status' = & gt; रिक्त, 'सूर्योदय' = & gt; $ सूर्योदय); $ स्तंभ = "आईपी, फ्लैट_स्टैटस, सूर्योदय"; $ sql = "स्केड्स में डालें ($ कॉलम) वैल्यू ($ प्लेसहोल्डर)"; $ stmt = $ db_found- & gt; तैयार ($ sql); $ Stmt- & gt; पर अमल ($ मान);
Comments
Post a Comment