通过将数据插入到表中的WordPress数据库WordPress的WPDB $(Inserting

2019-07-30 02:37发布

我开始了插件开发,并随后于WordPress的法典网站的教程。 我现在坚持-我有一个名为“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' ) );
?>

当我提交表单,我得到一个Error 500.0对Worpdress运行插件时IIS7.0"Page Not Found"的另一个Web服务器上运行时,它运行apache

如果我改变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' ) );
?>

我不再得到一个错误信息,但数据仍然未得到放入数据库中。

更新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-configwp-load.php 。 如果包括wp-load.php$wpdb获得价值,一切都很好。

Answer 1:

包含

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

工作对我来说



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

?>


Answer 3:

你现在可能已经想通了这一点,但没有人在这里讨论它。 示例代码在第三个参数“$ S”(第二阵列),但应该是“%s”的,因为它是值格式化。 该WP食品法典委员会说,[ http://codex.wordpress.org/Class_Reference/wpdb]这种格式参数$ wpdb->插入()是可选的。



Answer 4:

我认为有2次失误,你的SQL字符串。

认为它应该是$table_name变量应该级联

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

并取出; 在最后一行。



文章来源: Inserting data into a table in WordPress database using WordPress $wpdb