1

我有一个表(wp_postmeta),其中包含四列(meta_id、post_id、meta_key、meta_value)。meta_key 包含一个名为 neighbor_value 的字段,并且 neighbor_value 的值存储在 meta_value 列下。如何从我的表中检索neighborhood_value 的内容并将它们用作变量?任何支持表示赞赏

4

5 回答 5

0

如果我理解正确,您想从 meta_value 中键入一个键列表吗?

我会在 php 中执行此操作:(假设您正在使用某种支持此构造的框架。此示例适用于 codeigniter 框架)

$sql = "SELECT distinct meta_value FROM wp_postmeta"
$result = $db->query($sql)
foreach ($result->reult() as $row) {
  $mydata[] = $row->meta_value;
}

$mydata 现在是包含所有 meta_value 值的数组。

于 2012-05-19T00:11:14.023 回答
0

我正在做与以下相同的事情。

<?php foreach($values as $value)
{
    $myVarname[$value[valuefield]]=$value[valuefield];

}

$myVarname[field1]="Cow";
$myVarname[field2]="dog";
?>
于 2012-05-19T00:12:20.850 回答
0

好的,因为一切都是元,代码也将是“元”:)

更新- 现在,当我知道您使用什么连接到数据库时,我可以将答案更改为更具体。

global $wpdb;

$sql = "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=XXX";

$retMeta = array();
$results = $wpdb->get_results($sql);

foreach ($results as $resultRow)
{
    if (!isset($retMeta[$resultRow['meta_key']]))
    {
        $retMeta[$resultRow['meta_key']] = array();
    }
    $retMeta[$resultRow['meta_key']][] = $resultRow['meta_value'];
}

生成的 $retMeta 将是二维数组,然后您将能够使用 $retMeta['neighbourhood_value'][0] 访问您的邻域值(当然首先您必须检查是否设置了 - isset($retMeta['neighbourhood_value']))。

更新2

对于导入数据的脚本,它看起来像这样:

$sql = "SELECT meta_key, meta_value FROM wp_postmeta WHERE post_id=XXX";

$retMeta = array();
$result = mysql_query($sql);

while ($resultRow= mysql_fetch_assoc($result))
{
    if (!isset($retMeta[$resultRow['meta_key']]))
    {
        $retMeta[$resultRow['meta_key']] = array();
    }
    $retMeta[$resultRow['meta_key']][] = $resultRow['meta_value'];
}
mysql_free_result($result);

但是无论如何你都应该使用 WP_Query 来保持可移植性(wp_postmeta 不必这样命名,它可以是 wp2_postmeta 等)。

于 2012-05-19T00:16:35.337 回答
0

如果您正在使用诸如 loop.php 等 Wordpress 模板文件,只需使用方便的get_post_meta()函数。

于 2012-05-19T00:16:54.433 回答
0

你没有指定你想为你的变量使用什么语言——但如果它恰好是 MySQL 中的 SQL,这里是你如何“从 MySQL 表中检索值并保存在变量中”的方法:

select @var_name := column_name from table_name where other_column = 5;

这会执行选择,并作为副作用将用户变量 @var_name 的值分配给 column_name 的值。

或者

select @var_name := count(*) from other_table where other_column > 5;

它将@var_name 设置为匹配条件的记录数。

于 2012-05-19T01:44:03.413 回答