在WordPress数据库中保存自定义表单的数据

时间:2020-01-23 作者:Bot123

我创建了一个PHP程序,它根据HTML联系人表单中输入的用户输入提供定制输出。HTML表单(&H);PHP输出工作正常。然而,当我试图在WP数据库中保存数据时,我无法看到任何响应。我已经在数据库中创建了“wp\\u mealplanner”表,当我试图通过PHPMYADMIN手动保存数据时,它工作正常。请让我知道我哪里做错了。我没有收到任何错误消息。

请查找以下代码:

<?php
/* Template Name: CustomPageT1 */
$region = $_POST[\'Region\'];
$name = $_POST[\'user_name\'];
$email = $_POST[\'user_email\'];
$phone = $_POST[\'user_phone\'];

 $Click_here_to_start_your_download = \'https://mydailysugar.info/wp- 
 content/uploads/2019/09/Blood-Glucose-Chart-A4-1.pdf\';
 switch ($region )
 {
 case \'North\':
 echo "<a href=\'$Click_here_to_start_your_download\'>Click here to start your 
 download</a>";
 die;
 case \'South\':
  echo "<a href=\'$Click_here_to_start_your_download\'>Click here to start your 
  download</a>";
  die;
 case \'East\':
 echo "<a href=\'$Click_here_to_start_your_download\'>Click here to start your 
 download</a>";
  die;
  case \'West\':
 echo "<a href=\'$Click_here_to_start_your_download\'>Click here to start your 
 download</a>";
 die;
 }
 ?>
<?php

 if ( isset( $_POST[\'SUBMIT\'] ) )
  {
global $wpdb;
$table =\'wp_mealplanner\';
$data = array(\'name\' => $_POST[\'user_name\'],\'email\' => 
$_POST[\'user_email\'],\'phone\' => 
$_POST[\'user_phone\']);
$format = array(\'%s\',\'%s\',\'%d\');
$wpdb->insert( $table, $data, $format );
 }
?>

 <html>
 <head>
    <title> Meal Planner </title>
 </head>
 <body>
    <form  method=\'POST\'>
            <p>Name</p> <input type=\'text\' name=\'user_name\'>
            <p>Email</p> <input type=\'text\' name=\'user_email\'>
            <p>Phone</p> <input type=\'text\' name=\'user_phone\'>
            <p>Dropdown Box</p>
            <select name=\'Region\' size=\'1\'>
                    <option value=\'North\'>North
                    <option value=\'South\'>South
                    <option value=\'East\'>East
                    <option value=\'West\'>West
            </select>
            <br />
        <input type=\'submit\' name =\'submit\' value=\'SUBMIT\'><input 
       type=\'reset\'
    value=\'CLEAR\'>
        </form>
        </body>
        </html>

2 个回复
SO网友:Jacob Peattie

你在检查isset( $_POST[\'SUBMIT\'] ), 但没有这个名字的字段。如果要检查“提交”按钮,则需要给它一个name 具有正确值的属性:

<input type=\'submit\' name=\'SUBMIT\' value=\'SUBMIT\'>
现在isset( $_POST[\'SUBMIT\'] 将是true, 您的代码将运行。

而且,您似乎没有使用$wpdb->prefix 正确地$wpdb->prefix 基于用户在安装过程中输入的值,用于为WordPress自动创建的数据库表添加前缀,插件也可以使用它来命名其表。此前缀通常为wp_, 因此,如果您的表命名为wp_mealplanner, 然后,应将表名设置为:

$table = $wpdb->prefix . \'mealplanner\';
然而,如果您在PHPMyAdmin中手动创建表,那么表的名称实际上不是基于$wpdb->prefix, 因此,您应该对您给它起的名字进行硬编码:

$table = \'wp_mealplanner\';
您只能使用$wpdb->prefix 确保查询的表是使用$wpdb->prefix 首先,比如在插件激活期间。

SO网友:Bot123

能够解决此问题。在调用数据库函数之前,我已经输入了“DIE”命令。我将“DIE”命令移到数据库命令之后,并能够解决该问题。

相关推荐

WordPress-Site可以通过x.x/index.php访问-但不能直接在没有index.php的IP上访问

全新WordPress安装,在RPi 4上安装了Avade主题-在上访问时效果良好http://203.0.113.111/index.php 从外部连接,但如果我删除index.php 我什么都没有得到-连接被拒绝。这是正常行为吗?我不应该立即重定向到WP安装索引页吗?我已经将路由器中的端口80转发到Pi的内部IP,所以我无法理解这一点。我甚至修改了.htaccess 在里面/var/www/html 使用以下行:DirectoryIndex index.html index.php 但是,唉