wpdb INSERT适用于示例数组,但不适用于相同的$ _POST数组

问题描述 投票:0回答:1

我正在创建仅供管理员在前端使用的自定义表单。这样做的目的是将费用记录到mysql中的数据库表中。我已经尝试过使用wpdb->insertwpdb->prepare创建查询的多种方法,但不适用于$_POST超全局变量。

我创建了一个相同的名为$ sample_data的硬编码数组,并以完全相同的方式遍历该数组。使用各种echovar_dump语句后,我发现如果使用$wpdb,则全局变量$_POST不会启动,但是如果我的代码中未包含$_POST,它就可以正常工作。] >

我对此并不陌生,所以我想了解我在做错什么以及为什么这样做不起作用。任何帮助将不胜感激。

这是我正在使用的设置:

Ubuntu 18.04.01本地主机,WordPress 5.2.4,PHP 7.2,MySQL 5.7.27,Apache 2.4.29

我在WordPress安装上安装的唯一活动插件是我正在使用的插件,并且我正在运行应用了简单CSS样式的Underscores主题。

这是我的代码供您参考:

$table_name = $wpdb->prefix.'expenses';

if(isset($_POST['submit'])){
    foreach($_POST as $post_object => $post_value){
        if($post_value != NULL && $post_value !== 'submit'){
            $post_object_array[] = $post_object;
            $post_placeholder_array[] = '%s';
            $post_value_array[] = $post_value;
        }
    }
    $table_columns = "(".implode(', ', $post_object_array).")";
    $table_placeholders = "(".implode(', ', $post_placeholder_array).")";
    $query_builder = "INSERT INTO bsynfs_expenses $table_columns VALUES $table_placeholders";
    $prepare_query = $wpdb->prepare($query_builder, $post_value_array);
    $result = $wpdb->query($prepare_query);
}

这是我的form在前端编码的方式。这是我的插件中的shortcode .php文件的一部分:

  <form id="add_expense" action="<?php echo($plugin_directory_url.'processes/expense-process.php'); ?>" method="post">
        <input type="text" name="expense_type" value="" placeholder="expense_type">
            <input type="text" name="grocery_vendor" value="" placeholder="grocery_vendor">
            <input type="text" name="laundry_vendor" value="" placeholder="laundry_vendor">
            <input type="text" name="product_skus" value="" placeholder="product_skus">
            <input type="text" name="expense_reference" value=""  placeholder="expense_reference">
            <input type="text" name="expense_description" value="" placeholder="expense_description">
            <input type="submit" name="submit" value="submit" id="add_expense_submit">

我正在创建仅供管理员在前端使用的自定义表单。这样做的目的是将费用记录到mysql中的数据库表中。我尝试了多种创建...

php mysql wordpress http-post
1个回答
0
投票

尝试一下,对我来说,它在这里工作并工作。1-在模板中创建一个文件并添加此代码,然后在admin中创建一个页面并选择模板“ Test”或您要调用的任何名称。

© www.soinside.com 2019 - 2024. All rights reserved.