如何在WordPress中使用更新和删除查询

时间:2015-05-05 作者:deemi-D-nadeem

首先,我手动编写更新、删除、插入和选择查询,并使用mysql_query 作用

像这样:

选择查询

$prefix = $wpdb->prefix;
$postSql = "SELECT DISTINCT post_id
            FROM " . $prefix . "postmeta As meta
            Inner Join " . $prefix . "posts As post
            On post.ID = meta.post_id
            Where post_type = \'product\' 
            And post_status = \'publish\'
            And meta_key Like \'%product_img%\'";
$postQry = mysql_query($postSql);
while ($postRow = mysql_fetch_array($postQry)) {
     $post_id = $postRow[\'post_id\'];
}
插入查询

$insert_images = "Insert Into " . $prefix . "postmeta(post_id,meta_key,meta_value) Value(\'$post_id\',\'$meta_key\',\'$data_serialize\')";
        mysql_query($insert_images);
更新查询:

$update_price = "Update " . $prefix . "postmeta
                         Set meta_key = \'wpc_product_price\'
                         Where post_id = $supportMetaID
                         And meta_key Like \'%product_price%\'";
 mysql_query($update_price);
删除查询

mysql_query("Delete From " . $prefix . "postmeta Where meta_key IN (\'product_img1\',\'product_img2\',\'product_img3\')");
所有查询都工作正常。。。但现在我想在wordpress查询中嵌入所有查询。

我也可以使用wordpress查询,如

$wpdb->get_results( "SELECT id, name FROM mytable" );
$wpdb->insert( 
    \'table\', 
    array( 
        \'column1\' => \'value1\', 
        \'column2\' => 123 
    ), 
);
$wpdb->update( 
    \'table\', 
    array( 
        \'column1\' => \'value1\',  // string
        \'column2\' => \'value2\'   // integer (number) 
    ), 
    array( \'ID\' => 1 )
);
$wpdb->delete( \'table\', array( \'ID\' => 1 ) );
但你可以看到我用and / or 我的查询中的条件。所以任何人都可以帮助我如何在wordpress中嵌入查询

2 个回复
SO网友:T.Todua

关于更新+插入:

我为自己制作了一个函数,可能也会对您有所帮助,即:

UPDATE_OR_INSERT(\'wp_users\',  array(\'gender\'=>\'female\'), array(\'name\'=>\'Monika\') );
将更新列中的值(其中name=monika), 但如果该值不存在,则会在DB中创建一个新记录<为什么这是必要的?因为据我所知,没有复杂的WP函数,它将更新DB中的数据(如果值存在)或插入数据(如果不存在)。相反,我们使用:$wpdb->update()$wpdb->insert(). 因此,使用该功能,它有助于:

function UPDATE_OR_INSERT($tablename, $NewArray, $WhereArray){          global $wpdb; $arrayNames= array_keys($WhereArray);
    //convert array to STRING
    $o=\'\'; $i=1; foreach ($WhereArray as $key=>$value){ $o .= $key . \' = \\\'\'. $value .\'\\\'\'; if ($i != count($WhereArray)) { $o .=\' AND \'; $i++;}  }
    //check if already exist
    $CheckIfExists = $wpdb->get_var("SELECT ".$arrayNames[0]." FROM ".$tablename." WHERE ".$o);
    if (!empty($CheckIfExists))  { return $wpdb->update($tablename, $NewArray,  $WhereArray );}
    else                         { return $wpdb->insert($tablename,     array_merge($NewArray, $WhereArray) );  } 
}

SO网友:Gurpreet Singh

更新查询:

$table = $wpdb->prefix . \'tablename\';

$wpdb->update( $table_name, array( \'role_id\' => 1),array(\'user_id\'=>$user_id));
删除查询:

$wpdb->delete( $table, array( \'id\' => $id ) );

结束