2012-06-26 12 views
13

मैं प्लगइन विकास शुरू कर रहा हूँ और Wordpress कोडेक्स साइटों पर ट्यूटोरियल का पालन किया है। अब मैं फँस गया हूँ - मैं एक डेटाबेस "wp_imlisteningto" कहा जाता है, जहां wp_ का उपयोग कर सम्मिलित किया गया था है:सम्मिलित करना डेटा wpdb

$table_name = $wpdb->prefix . "imlisteningto"; 

जब प्लगइन सक्रिय है।

डेटाबेस में ही तीन कॉलम, की स्थापना की है जब प्लगइन सक्रिय है है:

$sql = "CREATE TABLE $table_name (
id mediumint(9) AUTO_INCREMENT, 
album VARCHAR(50), 
artist VARCHAR(50), 
PRIMARY KEY (id) 
);"; 

मैं एक php रूप से इस डेटाबेस में (एक नई पंक्ति बनाने के द्वारा) डेटा सम्मिलित करने के लिए कोशिश कर रहा हूँ।

Wordpress व्यवस्थापक के भीतर, मैं जो बहुत ही सरल रूप है एक नया पृष्ठ बनाने:

<form action="/wp-content/plugins/listeningto/formhtml.php" method="post"> 
Album: <input type="text" name="album" /> 
Artist: <input type="text" name="artist" /> 
<input type="submit"> 
</form> 

कौन सा रूप में आप कॉल formhtml.php देख सकते हैं, जो है:

<?php 
global $wpdb; 

$wpdb->insert($table_name, array('album' => $_POST['album'], 'artist' => $_POST['artist']), array('$s', '$s')); 
?> 

जब मैं प्रस्तुत प्रपत्र, मैं एक Error 500.0 जब IIS7.0 पर Worpdress में प्लगइन चलाने के लिए, और एक "Page Not Found" जब एक और वेब सर्वर जो apache चलाता है पर चल रहा है।

अगर मैं formhtml.php बदलें:

<?php 

echo $_POST['album']; 
echo $_POST['artist']; 

?> 

वर्क्स ठीक - मैं एल्बम और कलाकार है कि मैं फार्म में डाल मिलता है। स्पष्ट रूप से डेटाबेस में डेटा (एक नई पंक्ति में) डालने पर मैं कुछ गलत कर रहा हूं।

कि क्या हो सकता है के रूप में किसी भी विचार?

अद्यतन

ठीक है, यदि ऐसा है तो मैं इस के साथ formhtml.php अद्यतन:

<?php 
require_once('../../../wp-config.php'); 
$table_name = $wpdb->prefix . "imlisteningto"; 
$wpdb->insert($table_name, array('album' => $_POST['album'], 'artist' => $_POST['artist']), array('$s', '$s')); 
?> 

मैं अब एक त्रुटि संदेश मिलता है, लेकिन डेटा अभी भी डेटाबेस में डाल नहीं मिलता है।

अद्यतन 2

यह मेरे लिए काम किया:

<?php 
require_once('../../../wp-config.php'); 
global $wpdb; 
$table_name = $wpdb->prefix . "imlisteningto"; 
$wpdb->insert($table_name, array('album' => $_POST['album'], 'artist' => $_POST['artist'])); 
?> 

के रूप में किया था यह:

<?php 
require_once('../../../wp-load.php'); 
global $wpdb; 
$table_name = $wpdb->prefix . "imlisteningto"; 
$wpdb->insert($table_name, array('album' => $_POST['album'], 'artist' => $_POST['artist'])); 
?> 

तो, किसी कारण से $wpdb काम कर रहा था जब तक कि मैं या तो आवश्यक wp-config या wp-load.php। यदि wp-load.php, $wpdb को मूल्य मिलते हैं और सब ठीक है।

+3

requ_once (ABSPATH। 'Wp-settings.php'); साथ ही काम करना चाहिए। ABSPATH को परिभाषित किया गया है @ wp-load.php – enam

उत्तर

2

इस प्रयास करें ..

<?php 
global $wpdb; 

$wpdb->insert($table_name, array('album' => "$_POST['album']", 'artist' => "$_POST['artist']")); 
?> 

पूर्व:

<?php 
global $wpdb; 

$wpdb->insert($table_name , array('chart_name' => "Line Chart" ,'chart_type' => "trends",'status' => 0)); 

?> 
+0

हाय अजय उत्तर के लिए धन्यवाद - नहीं, यह या तो काम नहीं करता है। हालांकि, मैंने अपनी पोस्ट को अपडेट किया है जो मेरे लिए काम करता है। – AmmyKami83

+0

@MattyRasker यह काम करता है? अधिक जानकारी के लिए https://snipt.net/ajaypatel_aj/wordpress-crud-queries/ –

+0

हाय अजय, इसके लिए धन्यवाद, मैं इसे देख लूंगा। – AmmyKami83

5

require_once('../../../wp-config.php'); 

सहित के लिए मुझे

-1

मुझे लगता है कि आप में 2 गलतियों एसक्यूएल स्ट्रिंग देखते हैं काम करेंगे।

सोचो यह होना चाहिए $table_name चर

$sql = "CREATE TABLE" . $table_name . "(
id mediumint(9) AUTO_INCREMENT, 
album VARCHAR(50), 
artist VARCHAR(50), 
PRIMARY KEY (id) 
)"; 

concatenated किया जाना चाहिए और अंतिम पंक्ति पर ; को हटा दें।

+1

यह गलत है, आप समाप्त हो जाएंगे: 'TABLEwp_imlisteningto बनाएं' –

+0

नोट किया गया, लेकिन तालिका का निर्माण मुद्दा नहीं था, जो ठीक काम करता था। – AmmyKami83

0

आपने शायद इसे अभी तक समझ लिया है, लेकिन किसी ने इसे यहां संबोधित नहीं किया है। आपके नमूना कोड में तीसरे पैरामीटर (2 सरणी) में '$ s' है, लेकिन यह '% s' होना चाहिए क्योंकि यह मान-स्वरूपण के लिए है। डब्ल्यूपी कोडेक्स कहते हैं [http://codex.wordpress.org/Class_Reference/wpdb] कि $ wpdb-> insert() के लिए यह प्रारूप पैरामीटर वैकल्पिक है।

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