Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WordPress保存到数据库(ajax)_Php_Ajax_Wordpress - Fatal编程技术网

Php WordPress保存到数据库(ajax)

Php WordPress保存到数据库(ajax),php,ajax,wordpress,Php,Ajax,Wordpress,我有PHP和jQuery代码,它应该将数据保存到WordPress数据库中,并检测数据库中是否已经存在帖子。如果post存在,则echo已保存 问题是,它保存了一些项目,而不保存其他项目。我不确定还要做什么来调试这个问题 public static function wpnp_save_news(){ global $wpdb; $table_name = $wpdb->prefix.'wpnp'; if (is_user_logged_i

我有PHP和jQuery代码,它应该将数据保存到WordPress数据库中,并检测数据库中是否已经存在帖子。如果post存在,则echo已保存

问题是,它保存了一些项目,而不保存其他项目。我不确定还要做什么来调试这个问题

public static function wpnp_save_news(){
        global $wpdb;
        $table_name = $wpdb->prefix.'wpnp';

        if (is_user_logged_in()) {
          if (isset($_POST['delete'])) {
            $id = $_POST['id'];
            $wpdb->delete( $table_name, array( 'id' => $id ) );
            echo "Article deleted";
          }elseif (isset($_POST['savefav'])) {
            $user = $_POST['user_id'];
            $title = mysql_real_escape_string($_POST['title']);
            $sql = "SELECT count(*)  FROM $table_name  WHERE user=$user and title='".$title."'";
            $count = $wpdb->get_var($sql);


          if($count <= 0 ){
              $wpdb->insert(
                $table_name,
                array(
                  'user' => $_POST['user_id'],
                  'title' => $_POST['title'],
                  'summary' => $_POST['summary'],
                  'url' => $_POST['post_url'],
                  'img' => $_POST['img_url'],
                  'author' => $_POST['author'],
                  'source' => $_POST[ 'source']
                )
                );
                echo "Article saved";
            }else{
                echo "Article already saved";
            }
          }else{
            echo "Please login to save articles";
          }
        }
      wp_die();
      } 
-----------------------------------------
$('.wpnp-delete').on('click',(e)=>{
        e.preventDefault();
        const url = wpnpObj.au;
        const delete_data = {
          action: wpnpObj.ff,
          'delete': true,
          'id': e.currentTarget.dataset.id
        };
        const success = data =>{
          alert(data)
          window.location.reload()
        };
        const err = data =>{
          console.log(data);
        }
      $.post(url,delete_data,success).fail(err);
})

您需要在sql查询中更改一件事。Concat$用户变量。就像您对$title变量所做的那样。user_id是表$wpdb->prefix.wpnp;中的主键;?嗨,谢谢你的建议。SQL查询的格式正确,但保持一致始终是一种良好的做法,因此,我按照@rana的建议重新连接了查询字符串,但这不是问题所在。问题是,在数据库中,列摘要的最大长度为200,因此wpdb忽略了保存长度超过200个字符的项目。我减少了字符串长度,现在一切正常。不要使用mysql\u real\u escape\u字符串。阅读有关如何正确使用$wpdb的内容。