Php Wordpress:使用HTML表单将get_current_user_id()结果放入my DB表

Php Wordpress:使用HTML表单将get_current_user_id()结果放入my DB表,php,mysql,wordpress,phpmyadmin,Php,Mysql,Wordpress,Phpmyadmin,我有一个插件,它包含一个HTML表单,可以将POST数据发送到DB表。 除了一件事,它工作得非常好。登录用户的ID未发送到DB表。我想这可能是我在第2步之前的IF语句。我改变了很多次,但都没有结果。我所知道的是,这个if语句与GET请求一起工作,它实际上提供了用户的ID,但显然不与POST请求一起工作 function ml_install() { // #1 CREATE TABLE global $wpdb; // creates ml_char in databa

我有一个插件,它包含一个HTML表单,可以将POST数据发送到DB表。 除了一件事,它工作得非常好。登录用户的ID未发送到DB表。我想这可能是我在第2步之前的IF语句。我改变了很多次,但都没有结果。我所知道的是,这个if语句与GET请求一起工作,它实际上提供了用户的ID,但显然不与POST请求一起工作

    function ml_install() {
 // #1 CREATE TABLE
    global $wpdb;
    // creates ml_char in database if not exists
    $table = $wpdb->prefix . "ml_char"; 
    $charset_collate = $wpdb->get_charset_collate();
    $sql = "CREATE TABLE IF NOT EXISTS $table (
        `wp_id` mediumint(9) NOT NULL,
        `char_id` mediumint(9) NOT NULL AUTO_INCREMENT,
        `name` text NOT NULL,
    UNIQUE (`char_id`)
    ) $charset_collate;";
    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
    // starts output buffering
    ob_start();
     if ( is_user_logged_in() ) { 
        $wpid = get_current_id();
    }
// #2 CREATE HTML FORM
    ?>
    <form action="#ml_form" method="post" id="ml_form">
        <input type="hidden" name="wp_id" value="<? echo $wpid; ?>"/>
        <input type="text" name="character_name" id="character_name" />
        <input type="submit" name="submit_form" value="submit" />
    </form>
    <?php
    $html = ob_get_clean();
// #4 INSERT FORM DATA INTO DB
    if ( isset( $_POST["submit_form"] ) && $_POST["character_name"] && $_POST["wp_id"] != "" ) {
        $table = $wpdb->prefix."ml_char";
        $name = strip_tags($_POST["character_name"], "");
        $wpdb->insert( 
            $table, 
            array( 
                'name' => $name,
                'char_id' => $wp_id
            )
        );
        $html = "<p>Greetings <strong>$name</strong>, and welcome to Hyreath.</p>";
    }
函数ml\u install(){
//#1创建表格
全球$wpdb;
//如果不存在,则在数据库中创建ml_字符
$table=$wpdb->前缀“ml\u char”;
$charset\u collate=$wpdb->get\u charset\u collate();
$sql=“如果不存在,则创建表$TABLE(
`wp_id`mediumint(9)不为空,
`char_id`mediumint(9)非空自动增量,
`name`文本不为空,
唯一(`char\u id`)
)$charset_collate;“;
require_once(ABSPATH.'wp admin/includes/upgrade.php');
dbDelta($sql);
//开始输出缓冲
ob_start();
如果(用户是否已登录)(){
$wpid=get_current_id();
}
//#2创建HTML表单
?>

在执行sql查询时,您需要传递查询参数数组中的第三个参数:)看起来您忘记了:)

好的,各位,我找到了问题所在。我在数组中拼错了一个列名。其他用户Webcitron为我指出了正确的方向

这是一段功能代码,允许我从WPDB的wp_users表中获取某人当前的Wordpress ID,并将其插入我自己的表中。因此,现在,每当用户来到我的网站并创建新字符时,所有这些字符都将属于该特定用户,而不是任何人。我真的希望这对某些人有所帮助我不知道


我知道你在说什么。但是,实际上只发送了两件东西。用户的选择名称和他们的Wordpress ID。第三个值是字符ID,在插入数据时,我的DB表会自动增加字符ID。很抱歉,我早就应该提到这一点。感谢webcitron的反馈!我非常复制了并根据我的需要修改了这个代码。这是一个巨大的帮助。