14

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

$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管理者内で、非常に単純な形式の新しいページを作成します。

<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、Worpdressでプラグインを実行するIIS7.0と、"Page Not Found"が実行され、を実行する別のWebサーバーで実行するとが表示されます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が必要でない限り、何らかの理由で機能しませんでした。includeの場合、値を取得し、すべてが順調です。wp-configwp-load.phpwp-load.php$wpdb

4

6 に答える 6

5

含む

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

私のために働いた

于 2012-07-17T07:21:33.873 に答える
3

これを試して..

<?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));

?>
于 2012-06-26T13:32:42.460 に答える
0

DB テーブルに従って配列を作成します。次にWP挿入を使用します。

 global $wpdb;
 $order = [
            'product_id' =>'1',
            'discount' => '1',
            'total' => '1',
            'status' => '1',
            'payment_method' => '1',
            'payment_reference' => '1',
            'sold_by' => '1'
        ];

$wpdb->insert('DB_TABLE_NAME', $order );
于 2021-10-19T11:37:18.533 に答える