2011-05-31 32 views
5
 $result53543534 = mysql_query("UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'") 
or die(mysql_error()); 

लेकिन अपडेट नहीं होता है। $battle_get['username'] चेक किया गया और उपयोगकर्ता नाम वहां है। मैं पहले से किसी भी त्रुटि या कुछ भी बस नहीं जोड़ने नहीं मिल रहा है ...mysql क्वेरी कुछ भी काम नहीं कर रहा है

किसी भी मदद की बहुत अच्छा धन्यवाद किया जाएगा

+3

आप ईमेल फ़ील्ड में उपयोगकर्ता नाम का उपयोग कर रहे हैं? संभावना है कि एसक्यूएल उस 'ईमेल' पते के साथ एक पंक्ति नहीं ढूंढ रहा है। –

+0

ईमेल उपयोगकर्ता नाम होना चाहिए, है ना? क्या आपने जांच की है कि यह वास्तव में कुछ मेल खाता है? –

+0

क्या PHP को कथन के अंत में अर्धविराम की आवश्यकता होती है - 'अद्यतन ब्लाह डी ब्लाह जहां ईमेल =' thedata '; ' –

उत्तर

0

कोशिश परीक्षण

$email = $battle_get['username']; 
UPDATE users SET credit=credit+1 WHERE email= '$email' 
+0

अभी भी कुछ भी नहीं हुआ ... – nick

+0

PHP में LINQ – David

+0

PHP नहीं है LINQ ?? – nick

0

आप डेटाबेस के लिए क्वेरी करने के बारे में भूल गया, लेन-देन की कोशिश

mysql_query("START TRANSACTION"); 
mysql_query("UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'"); 
mysql_query("COMMIT"); 
+0

डाटाबेस कनेक्ट पेज के शीर्ष पर है। मैं \t include_once ('config.php') का उपयोग करता हूं; शीर्ष अन्य एसक्यूएल स्क्रिप्ट्स के प्रत्येक पृष्ठ पर इसके साथ काम करते हैं, इसलिए यह कनेक्ट हो रहा है ... – nick

+0

शायद आपकी mysql सेटिंग्स 0 से autocommit सेट करें, इसे 1 – brian

+0

autocommit पर सेट करें? मैं अन्य पृष्ठों पर अपनी वेबसाइट पर चयन करता हूं और सम्मिलित करता हूं ... बस अपडेट – nick

3

देखें क्या mysql_affected_rows() से परिणाम है:

if (! $result53543534 = mysql_query("UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'")) { 
    die(mysql_error()); 
} else { 
    echo "Number of rows affected: " . mysql_affected_rows() . "<br>"; 
} 

मेरे पास वाक्यविन्यास पूरी तरह से सही नहीं हो सकता है लेकिन मुझे उम्मीद है कि आपको यह विचार मिल जाएगा। यदि परिणाम 0 है, तो आप WHERE वाक्यविन्यास निर्दिष्ट नहीं कर रहे हैं ताकि यह वास्तव में किसी भी पंक्ति को संदर्भित कर सके।

यदि परिणाम 0 से अधिक है, तो आपको गलत लगता है अगर आपको लगता है कि यह किसी भी पंक्ति को प्रभावित नहीं कर रहा है। यह उन पंक्तियों को प्रभावित नहीं कर सकता है जो आपको लगता है कि यह चाहिए, लेकिन यह एक और मुद्दा है।

इसके अलावा, echo अपने एसक्यूएल स्टेटमेंट ताकि आप वास्तव में देख सकें कि यह वास्तव में क्या कर रहा है।

+0

ईमेल करने के लिए बदलने की आवश्यकता है, इसके अलावा, उस प्रतिध्वनि sql कथन को ले जाएं और इसे कमांड लाइन क्लाइंट में चलाएं या PHPMyAdmin क्या हो रहा है के बारे में एक बेहतर विचार पाने के लिए। – user151841

+0

उस कोड के साथ एक सफेद पृष्ठ प्राप्त करना – nick

+0

मुझे लगता है कि मैंने वाक्यविन्यास त्रुटियों को ठीक कर दिया है, इसे फिर से प्रयास करें। यदि नहीं, तो आप हमेशा अपना कोड लिख सकते हैं 'mysql_affected_rows() ':) – user151841

0

मैं कोड को निम्नानुसार बदलने का सुझाव दूंगा, यह आपको एसक्यूएल क्वेरी की जांच करने की अनुमति देगा। यह देखने के लिए एसक्यूएल क्वेरी का परीक्षण करने का प्रयास करें कि यह बिल्कुल चलता है या नहीं। आप अपने mysql कंसोल पर DESCRIBE उपयोगकर्ताओं को भी चलाने के लिए देख सकते हैं यह देखने के लिए कि आपको किस प्रकार की जानकारी मिलती है।

$sql = "UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'" 
echo $sql; 
if (! $result53543534 = mysql_query($sql)) { 
    die(mysql_error()); 
} else { 
    echo "Number of rows affected: " . mysql_affected_rows() . "<br>"; 
} 
0

उस कनेक्शन में उपयोगकर्ता को अनुदान अद्यतन की अनुमति दें जिसके लिए आप इसका उपयोग कर रहे हैं। सिर्फ इसलिए कि उपयोगकर्ता चयन और INSERT चुनने में सक्षम है, इसका मतलब यह नहीं है कि वे स्वचालित रूप से अपडेट भी कर सकते हैं, आपको उन्हें अद्यतन करने की अनुमति स्पष्ट रूप से प्रदान करने की आवश्यकता है। और mysql_error() भी कोई त्रुटि नहीं दिखाएगा क्योंकि आपका SQL कथन सही है, इसलिए कोई त्रुटि दिखाई नहीं दे रही है।

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