2012-12-18 23 views
8

मैं वर्डप्रेस के लिए एक प्लगइन लिख रहा हूं, जो जांच करनी चाहिए कि कोई mysql प्रविष्टि पहले से मौजूद है या नहीं।
यदि यह अस्तित्व में नहीं है तो वर्डप्रेस को तालिका में प्रवेश डालना चाहिए। यह भाग काम करता है जैसा कि मैंने उम्मीद की थी।
हालांकि, अगर पहले से ही mysql तालिका में एक प्रविष्टि है, तो वर्डप्रेस को तालिका को अद्यतन करना चाहिए, लेकिन यह काम नहीं करता है।वर्डप्रेस अपडेट mysql तालिका

कोड मैं इस के लिए उपयोग कर रहा हूँ निम्नलिखित कोड है:

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time=$current_timestamp WHERE userid=$userid")); 

चर मैं इस क्वेरी में उपयोग करते हैं, सही हैं क्योंकि वे सफलतापूर्वक तालिका में डालने के लिए उपयोग किया जाता है, लेकिन कहीं न कहीं रास्ता कुछ के साथ अद्यतन समारोह के साथ गलत हो जाता है।

क्या कोई मुझे बता सकता है कि मैं यहां क्या गलत कर रहा हूं?
इस बारे में जाने का सही तरीका क्या है?

उत्तर

11

स्तंभ time का मूल्य single quote

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time='$current_timestamp' WHERE userid=$userid")); 
+0

बहुत बहुत शुक्रिया! मैं कुछ ऐसी चीज पर खुद को अंधेरा देख रहा था जो मुझे कहीं अधिक जटिल होने की उम्मीद थी। यह अब पूरी तरह से काम करता है। –

+3

लेकिन क्वेरी 'एसक्यूएल इंजेक्शन' के साथ कमजोर है, कृपया इसे रोकने के लिए आलेख पढ़ने के लिए समय दें। [** PHP में एसक्यूएल इंजेक्शन को कैसे रोकें **] (http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection) –

+0

अद्यतन क्वेरी निष्पादित करने का सबसे आसान तरीका देने के लिए धन्यवाद –

2
$result = $wpdb->update('westend_areaofficers', array('officerOrder' => $memberOrder, 
'officerTitle' => $memberTitle, 'officerName' => $memberName, 'officerPhone' => 
$memberPhone), array('officerId' => $memberId), array('%d','%s', '%s', '%s'), 
array('%d')); 

if($result > 0){ 
echo "Successfully Updated"; 
} 
else{ 
    exit(var_dump($wpdb->last_query)); 
} 
$wpdb->flush(); 

ऊपर समाधान के साथ संलग्न किया जाना चाहिए क्या मेरे लिए काम किया $ wpbd-> क्वेरी ($ wpbd-> तैयार()) का उपयोग कर, क्योंकि है सही संख्या और स्ट्रिंग प्रारूपों में गुजरते समय भी कथन काम नहीं करता था।
var_dump() फ़ंक्शन का उद्देश्य यह देखने के लिए है कि क्वेरी का निष्पादन गलत हो गया था। यह क्वेरी और मूल्यों को पारित करता है। बेशक का उपयोग कर $ wpdb-> flush() फ़ंक्शन निष्पादित करने के लिए अगली क्वेरी के लिए कैश साफ़ करता है।

1

उदाहरण:

परिवर्तन उपयोगकर्ता की (जिसका आईडी है 546) Nicename Harde_Bande

$execut= $wpdb->query($wpdb->prepare("UPDATE $wpdb->users SET user_nicename = %d WHERE ID = %s", "Harde_Bande", 546)); 
var_dump($execut); 
को

में अधिक जानें: http://codex.wordpress.org/Class_Reference/wpdb#Examples

0
UPDATE wp_options SET option_value = replace(option_value, 'http://www.example.com', 'http://localhost/test-site') WHERE option_name = 'home' OR option_name = 'siteurl'; 
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.example.com', 'http://localhost/test-site'); 
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.example.com','http://localhost/test-site');