[英]Retrieve Value From MySQL Table and Save in Variable
我有一個表(wp_postmeta),其中包含四列(meta_id,post_id,meta_key,meta_value)。 meta_key包含一個名為neighborhood_value的字段,neighborhood_value的值存儲在meta_value列下。 如何從表中檢索neighbourhood_value的內容並將其用作變量? 任何支持表示贊賞
如果我理解正確,您想從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等)。
如果您正在使用Wordpress模板文件(例如loop.php等),則只需使用方便的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設置為符合條件的記錄數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.