2012-06-26 10 views
13

私はプラグインの開発を開始しており、Wordpress Codexサイトのチュートリアルに従っています。私は今、立ち往生しています - 私はwp_を使用して挿入された「wp_imlisteningto」と呼ばれるデータベース、持っている:

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

プラグインが有効化されます。

データベース自体は、プラグインが起動されたときにセットアップ、3つの列を有している:

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

私はPHPフォームからこのデータベースに(新しい行を作成することによって)データを挿入しようとしています。

Wordpressの管理の中で、私は非常に単純な形状を有している新規ページ作成:

あなたは通話 formhtml.php、見ることができるよう
<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> 

:私が提出した場合

<?php 
global $wpdb; 

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

を私はIIS7.0のWorpdressでプラグインを実行するとError 500.0apacheを実行する別のWebサーバーでは"Page Not Found"を実行します。

私はformhtml.phpに変更する場合:

<?php 

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

?> 

作品罰金 - 私は形に入れたアルバムやアーティストを取得します。明らかに、データを(新しい行に)データベースに挿入するときに間違っていることです。

それは何かについて考えていますか?

UPDATE

オクラホマので、私はこれで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')); 
?> 

私はもはや、エラーメッセージが出ていないが、データはまだデータベースに入れて取得していません。

UPDATE 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.phpwp-load.phpを含めると、$wpdbが値を取得し、すべて正常です。

+3

require_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']")); 
?> 

例:

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

含む

<?php 
global $wpdb; 

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

?> 
+0

こんにちはAjayさんが返信してくれてありがとうございます。しかし、私は私のために働いたもので私のポストを更新しました。 – AmmyKami83

+0

@MattyRasker動作しますか?詳細についてはhttps://snipt.net/ajaypatel_aj/wordpress-crud-queries/ –

+0

こんにちはアジェイ、ありがとう、私はそれをチェックアウトします。 – AmmyKami83

-1

に動作します私はあなたのSQL文字列の2つの間違いがあると思います。

はそれが$table_name変数が

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

を連結し、最後の行に;を削除する必要がありますされるべきだと思います。

+1

これは間違っている、あなたは最終的になります: 'CREATE TABLEwp_imlisteningto' –

+0

注目されているが、テーブルの作成はうまくいきました。 – AmmyKami83

0

あなたはおそらくこれを今考え出したでしょうが、ここでは誰もそれに対処しませんでした。サンプルコードは3番目のパラメータ(2番目の配列)に '$ s'がありますが、それは値の書式設定のため '%s'にする必要があります。 WP Codexでは、[http://codex.wordpress.org/Class_Reference/wpdb]]は、$ wpdb-> insert()のこの形式パラメータはオプションであると言います。

関連する問題