【问题标题】:Get all id of post i add it by custom query获取帖子的所有 id 我通过自定义查询添加它
【发布时间】:2020-08-29 17:39:50
【问题描述】:

现在我有这个查询:

$query1 =  "
INSERT INTO wpr9_posts
(post_date
, post_content
, post_title
, post_status
, post_name
, post_type)  
SELECT '2020-08-28 18:30:43'
     , image
     , name
     , 'publish'
     , id
     , 'post' 
  FROM play
 WHERE catid = 863
" ;
$loopids = $wpdb->query($wpdb->prepare($query1));

这个查询插入114行,添加到wpr9_posts表后,我需要将所有ids添加到tis表中才能添加到wpr9_postmeta表中,

$query2 =  "INSERT INTO wpr9_postmeta ( `post_id`,`meta_key`,`meta_value` ) 
SELECT '".$id1."', 'mp3url',`image` FROM `play` WHERE `catid` = '863'" ;
$wpdb->query(
    $wpdb->prepare($query2)
);

此查询仅添加一行,因为我使用以下方法仅获得一个 id:

$id1 =  $wpdb->insert_id;

所以,我需要将所有 id 插入 wpr9_postmeta

【问题讨论】:

    标签: mysql sql wordpress


    【解决方案1】:

    SQL server 中的@@IDENTITY、SCOPE_IDENTITY()、IDENT_CURRENT(‘table’)等查询执行后有多个获取插入的id。

    INSERT INTO wpr9_posts (...) VALUES (...)
    SET @LASTID = @@IDENTITY
    
    INSERT INTO wpr9_posts (...) VALUES (...)
    SET @LASTID = SCOPE_IDENTITY()
    
    SET @LASTID = IDENT_CURRENT('dbo.wpr9_posts')
    

    至于Mysql。很难工作。您可以声明一个开始游标和结束游标,在它们之间,您可以按以下方式运行查询

        declare start_pk int;
        declare end_pk int;
    
        set start_pk = last_insert_id(); -- lets say 100
        
        INSERT INTO wpr9_posts
    (post_date
    , post_content
    , post_title
    , post_status
    , post_name
    , post_type)  
    SELECT '2020-08-28 18:30:43'
         , image
         , name
         , 'publish'
         , id
         , 'post' 
      FROM play
     WHERE catid = 863
    
        set end_pk = last_insert_id(); -- lets say 200
        -- result any ids in from 100 to 200 is your inserted id
    

    【讨论】:

    • 当然与WordPress无关。这取决于您使用的数据库引擎。如果你使用的是 Linux,很可能是 Mysql
    猜你喜欢
    • 2017-09-24
    • 2013-09-15
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多