0

我正在尝试将新表行插入自定义wpdb表中。数据来自发布到脚本的表单。

global $wpdb在脚本的开头声明,并插入到数据库中,但由于某种原因,它不喜欢 WordPress 建议在 codex 中使用的查询功能。

// declare global wpdb
global $wpdb;

// set variables for posting to db
$name = $_POST['name'];
$email = $_POST['email'];

// post to the db
$wpdb->query( $wpdb->prepare( 
    "
        INSERT INTO $wpdb->entries
        ( name, email )
        VALUES ( %s, %s )
    ", 
    $name, 
    $email 
) );

关于它为什么会出现问题的任何想法?

4

3 回答 3

10

它是一个 wordpress 功能,因此$wpdb只有在之前定义过全局时才能调用全局。

这意味着,在 /wp-content/... 文件夹中,如果您使用具有 wp 特定功能的脚本,则在使用 wordpress 核心编译之前它将无法工作。

因此,例如,主题模板或插件文件可以通过调用来工作$wpdb,但您的独立脚本不会,即使它位于插件或主题目录中。

简单的解决方案是在运行该脚本之前包含 /wp-config.php 文件。写吧:

include_once($_SERVER['DOCUMENT_ROOT'].'/wordpress/wp-config.php' );

打电话之前$wpdb。这个对我有用。

于 2013-11-25T17:57:58.910 回答
0
<?php
/**
 * Created by PhpStorm.
 * User: manisha
 * Date: 05-11-2015
 * Time: 15:30
 */
include_once($_SERVER['DOCUMENT_ROOT'].'/wordpress/wp-config.php' );
$email = $_REQUEST['email'];

global $wpdb;
$result=$wpdb->query(
    $wpdb->prepare(
        "
             DELETE FROM wp_addemail
                 WHERE email = %s
                ",
        $email

    )
);

this things is worked for me
于 2015-11-05T10:18:46.027 回答
0

我已经解决了我的错误

  include_once($_SERVER['DOCUMENT_ROOT'].'/wordpress/wp-config.php' );

这段代码实际上我已经使用 Ajax 在我的自定义数据库表中提交了表单数据,但是我遇到了一个致命错误。现在这个致命错误已经解决了。

于 2016-09-29T06:26:40.950 回答