我正在创建仅供管理员在前端使用的自定义表单。这样做的目的是将费用记录到mysql中的数据库表中。我已经尝试过使用wpdb->insert
和wpdb->prepare
创建查询的多种方法,但不适用于$_POST
超全局变量。
我创建了一个相同的名为$ sample_data的硬编码数组,并以完全相同的方式遍历该数组。使用各种echo
和var_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中的数据库表中。我尝试了多种创建...
尝试一下,对我来说,它在这里工作并工作。1-在模板中创建一个文件并添加此代码,然后在admin中创建一个页面并选择模板“ Test”或您要调用的任何名称。