首先,我手动编写更新、删除、插入和选择查询,并使用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中嵌入查询
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) ); }
}