通过数据库查询检索自定义字段数组值

时间:2012-03-07 作者:poisonborz

我正在尝试根据多个自定义字段查询数据库中的帖子。如果值很简单,使用下面的代码就很容易了:

 $querydetails = "
       SELECT wposts.*
       FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
       WHERE wposts.ID = wpostmeta.post_id
       AND wpostmeta.meta_key = \'field\'
       AND wpostmeta.meta_value = \'value\'
       AND wposts.post_status = \'publish\'
     ";
但如何查询以数组形式存储的值,如:1:{I:0;s:8:“value”}?

3 个回复
最合适的回答,由SO网友:krazymatty 整理而成

无法在数据库中查询数组中的值。但是,您可以获取整个数组并解析该数组以获得您的值。退房PHP ARRAY-VALUES. 您很可能需要为每条语句使用一个。

您尝试获取的值是否显示在数组中的同一位置?如果是这样的话,应该更容易找到目标。

祝你好运

SO网友:Bainternet

你不能,因为这是不可能的!

大约一年前我问过same question (几乎)我得到的答案是

唯一可以接受序列化数据的情况是,不需要通过该数据进行搜索或排序。

因此,如果数据存储为序列化数组,则无法按其进行过滤。

SO网友:poisonborz

虽然问题中的方法可能不可行,但我意识到在我的情况下,它更容易(而且可能!)修改查询,而不是直接查询数据库。下面的示例适用于数组格式,因为它将找到其中包含的字符串(“like”开关)。

$args = array(
    \'post_type\' => \'termek\',
    \'meta_query\' => array(
        array(
            \'key\' => \'property\',
            \'value\' => \'value\',
            \'compare\' => \'like\'
        ),
        array(
            \'key\' => \'property\',
            \'value\' => \'value\',
            \'compare\' => \'=\'
        )
    )
 );
?>
<?php query_posts($args); ?>

结束

相关推荐

$wpdb->num_rows doesn't work

我试图在自定义字段保存到db之前对其执行一些检查。所以我决定在浏览器和db之间使用add\\u过滤器。这是我的密码function fields_pre_check($post_id){ $errors = false; $values = get_post_custom(get_the_ID()); $act_val = $_POST[\'checks_news\']; 。。。altri检查。。。if(get_check_key($post_id, $act_