簡體   English   中英

使用 WordPress $wpdb 將數據插入到 WordPress 數據庫中的表中

[英]Inserting data into a table in WordPress database using WordPress $wpdb

我正在開始插件開發並遵循 WordPress Codex 網站上的教程。 我現在卡住了 - 我有一個名為“wp_imlisteningto”的數據庫,其中wp_是使用以下方法插入的:

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

當我提交表單時,在IIS7.0上的 Worpdress 中運行插件時出現Error 500.0 ,在另一台運行apache Web 服務器上運行時出現"Page Not Found"

如果我將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'] ) );
?>

因此,出於某種原因,除非我需要wp-configwp-load.php否則$wpdb無法正常工作。 如果包含wp-load.php$wpdb會獲取值並且一切正常。

包含

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

為我工作

嘗試這個..

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

?>

你現在可能已經想到了這一點,但沒有人在這里解決它。 您的示例代碼在第3個參數(第2個數組)中有'$ s',但應該是'%s',因為它是用於值格式化的。 WP Codex說[ http://codex.wordpress.org/Class_Reference/wpdb] $ wpdb-> insert()的這個格式參數是可選的。

全球 $wpdb;
$table_name1 = $wpdb->prefix.'php_crud';

    $data_insert= array(
                    
                    'uname1' => $uname1,
                    'uemail1' => $uemail1,
                    'upass1' => $upass1,
                    'language1' => $language1,
                    'gender1' => $gender1,
                    'ustate1' => $ustate1,
                    'file1' => $finalimg
                    );

$form_insert1=$wpdb->insert($table_name1,$data_insert); if($form_insert1) { echo "<div class='container' style{ color:red;} >表單提交成功"; } else { 回聲“錯誤”; }

根據數據庫表創建數組。 然后使用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 );

我認為你的sql字符串有2個錯誤。

認為它應該是$table_name變量應該連接起來

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

並刪除; 在最后一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM