将语句插入自定义 WordPress 数据库

Posted

技术标签:

【中文标题】将语句插入自定义 WordPress 数据库【英文标题】:Insert statement into custom WordPress database 【发布时间】:2017-04-14 06:41:42 【问题描述】:

我有一个自定义数据库,我想从 WordPress 前端界面插入项目。当我提交表单时,我可以很好地获取 JSON 值,但由于某种原因,它似乎没有插入到数据库中。我没有收到任何错误消息。

这就是我正在做的事情(请注意,我正在测试 name 变量,因此它没有从输入字段中提取):

我正在使用来自SHOW TABLE STATUSauto_increment_id 值来创建commmittee_id 值,并且希望将其作为主键插入。

JavaScript

$(".addButton").click(function() 
    var commitAddID = $(this).attr('id');
    var name = "1name";
    var date_created = $("#addCommCreated_input_"+commitAddID).val();
    var status = $("#addCommStatus_input_"+commitAddID).val();
    var disbanded = $("#addCommDisbanded_input_"+commitAddID).val();

    var dataString = 
     'action': 'addCommittee',
     'committee_id': commitAddID,
     'old_id': commitAddID,
     'name': name,
     'description': '',
     'date_created': date_created,
     'status': status,
     'disbanded': disbanded
    ;

    jQuery.ajax(
      url: addCommittee.ajaxurl,
      type: "POST",
      data: dataString,
      dataType: "json",
      success: function (response) 
        $("#name_"+commitAddID).html(name);
        $("#created_"+commitAddID).html(date_created);
        $("#status_"+commitAddID).html(status);
        $("#disbanded_"+commitAddID).html(disbanded);
      
    );

functions.php

  // set up AJAX call for addCommittee
add_action('wp_ajax_addCommittee', 'addCommittee');
add_action('wp_ajax_nopriv_addCommittee', 'addCommittee');

function addCommittee() 
  global $wpdb;

  $committee_id = esc_sql($_POST['committee_id']);
  $old_id = esc_sql($_POST['old_id']);
  $name = esc_sql($_POST['name']);
  $created = esc_sql($_POST['date_created']);
  $status = esc_sql($_POST['status']);
  $disbanded = esc_sql($_POST['disbanded']);
  $desc= esc_sql($_POST['description']);


  $wpdb->insert('wp_bubu_committees',
              array(
              'old_id' => '',
              'name' => $name,
              'description' => '',
              'date_created' => $created,
              'status' => $status,
              'disbanded' => $disbanded
              )
            );
            exit();
  

我还将 AJAX URL 本地化为 functions.php。有什么想法吗?

编辑:更新了代码——操作设置为 .我现在可以插入数据库,但它只允许我插入一项。尝试插入其他项目不会返回任何内容,但数据确实会发布到 JSON。

【问题讨论】:

委员会ID是主键吗? Committee_id 是主键。我从auto_increment_id 中获得了您从SHOW TABLE STATUS 获得的价值 添加这个'committee_id' => $id第一个数组并删除inser中的第二个和第三个数组 删除我要查询的委员会并尝试 没有用 - 您介意将此对话移至聊天吗?我可以提供有关代码的更多信息 【参考方案1】:

删除数据类型json。

    jQuery.ajax( 
        url: addCommittee.ajaxurl, 
        type: "POST", 
        data: dataString, 
        success: function (response)  
            $("#name_"+commitAddID).html(name); 
            $("#created_"+commitAddID).html(date_created); 
            $("#status_"+commitAddID).html(status); 
            $("#disbanded_"+commitAddID).html(disbanded); 
            alert(response); 
         
    ); 

【讨论】:

没用。 alert(response) 似乎不打印任何内容或空白,无论我是在做alert(); 还是console.log(); 有趣的是,当我测试这些插入时,committee_id 每次都增加 2。不知道为什么它会上升 2,但在我看来,它正在处理新的 auto_increment_id。只是不将其发布到数据库。 所以我需要做的是确保 'old_id' => 被设置为某些东西。我将它设置为它的变量 $old_id。在那之后,在删除dataType: json 之后,我可以开始添加多个。感谢您的所有帮助,@vel! @sleepy_daze,很高兴为您提供帮助。

以上是关于将语句插入自定义 WordPress 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何将 json 结果插入 WordPress 表中?

在 wordpress 自定义模板中显示插入的数据

WordPress 自定义插入到帖子按钮

使用 html 表单将数据插入到 wordpress 表中

如何在WORDPRESS首页插入一段自定义代码?

WordPress 自定义页面还是其他?