Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用WordPress$wpdb将数据插入WordPress数据库的表中_Php_Wordpress_Forms - Fatal编程技术网

Php 使用WordPress$wpdb将数据插入WordPress数据库的表中

Php 使用WordPress$wpdb将数据插入WordPress数据库的表中,php,wordpress,forms,Php,Wordpress,Forms,我开始了插件开发,并遵循了WordPress Codex网站上的教程。我现在被卡住了-我有一个名为“wp_imlistengto”的数据库,其中wp_是通过以下方式插入的: $table_name = $wpdb->prefix . "imlisteningto"; 当插件被激活时 数据库本身有三列,在插件激活时设置: $sql = "CREATE TABLE $table_name ( id mediumint(9) AUTO_INCREMENT, album VARCHAR(50),

我开始了插件开发,并遵循了WordPress Codex网站上的教程。我现在被卡住了-我有一个名为“wp_imlistengto”的数据库,其中
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>
当我提交表单时,当在
IIS7.0
上的WorpAddress中运行插件时,我会收到
错误500.0
,当在另一台运行
apache
的web服务器上运行插件时,会收到
“未找到页面”

如果我将
formhtml.php
更改为:

<?php

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

?>
我不再收到错误消息,但数据仍然没有放入数据库

更新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
。如果include
wp load.php
$wpdb
获取值,一切正常。

试试这个

<?php
global $wpdb;

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

包括

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

为我工作

我认为您的sql字符串中有两个错误

我想应该是
$table\u name
变量应该连接在一起

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

并删除
在最后一行。

您现在可能已经解决了这个问题,但这里没有人解决它。示例代码的第3个参数(第2个数组)中有“$s”,但该参数应为“%s”,因为它用于值格式设置。WP Codex说,[这个$wpdb->insert()的格式参数是可选的。

Hi Ajay谢谢你的回复-不,这也不起作用。但是,我已经用对我有用的东西更新了我的帖子。@MattyRasker有用吗?有关更多信息,请访问一次(ABSPATH。'WP settings.php'));也应该可以工作。ABSPATH是defined@wp-load.php这是错误的,您将得到:
CREATE TABLEwp\u imlisteningto
注意到,但是创建表不是问题,这很好。
<?php
global $wpdb;

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

?>
require_once('../../../wp-config.php');
$sql = "CREATE TABLE" . $table_name . "(
id mediumint(9) AUTO_INCREMENT,
album VARCHAR(50),
artist VARCHAR(50),
PRIMARY  KEY (id)
)";