我刚刚开始学习 mysql,所以这可能非常简单。
我有一个包含以下示例数据的 3 行表
user_id metakey meta_value
1 image_type avatar
1 location london
1 image_url 1.jpg
2 image_type facebook
2 location somewhere
2 image_url
如果我想要来自另一个 metakey
的 meta_value
数据,如何获取 meta_value
的值而无需每次都重新查询表?
所以 1->location 会显示 london 2->image_type 会显示 facebook 等等。
经过一些摆弄,我最终来到了这里:
$query_usermeta = "SELECT * FROM usermeta WHERE user_id = '$user_id'" or die("Error in the consult.." . mysqli_error($link));
//execute the query.
$result_usermeta = mysqli_query($link, $query_usermeta);
/* associative array */
$userdatameta = $result_usermeta->fetch_array(MYSQLI_ASSOC);
然后使用 echo $userdatameta['meta_value']
但我如何指定要显示的 meta_value?
我知道我可以在 mysql 查询中执行此操作,例如 WHERE metakey = 'location'
但是我必须多次查询才能获取所有值,不是吗?
最佳答案
与其对每一行运行查询,不如将数组构建为键值对,仅通过用户 ID 进行查询
SELECT * FROM usermeta WHERE user_id = '$user_id'
循环你的结果
$metaData=array();
while($row = $result_usermeta->fetch_array())
{
$metaData[$row['metakey']] = $row['meta_value'];
}
现在在 $metaData
中,您将值作为键值对作为
array(
'image_type'=>'avatar',
'location' =>'london',
'image_url'=>'1.jpg'
)
现在使用您的值作为位置 echo $metaData['location']
用于图像 url echo $metaData['image_url']
关于php - 在第 2 行中查找特定值并显示第 3 行中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25841352/