我有一个表(wp_postmeta),其中包含四列(meta_id、post_id、meta_key、meta_value)。meta_key 包含一个名为 neighbor_value 的字段,并且 neighbor_value 的值存储在 meta_value 列下。如何从我的表中检索neighborhood_value 的内容并将它们用作变量?任何支持表示赞赏
5 回答
如果我理解正确,您想从 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 值的数组。
我正在做与以下相同的事情。
<?php foreach($values as $value)
{
$myVarname[$value[valuefield]]=$value[valuefield];
}
$myVarname[field1]="Cow";
$myVarname[field2]="dog";
?>
好的,因为一切都是元,代码也将是“元”:)
更新- 现在,当我知道您使用什么连接到数据库时,我可以将答案更改为更具体。
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 等)。
如果您正在使用诸如 loop.php 等 Wordpress 模板文件,只需使用方便的get_post_meta()函数。
你没有指定你想为你的变量使用什么语言——但如果它恰好是 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 设置为匹配条件的记录数。