我如何将2行的值合二为一

时间:2014-01-05 12:56:04

标签: php mysql arrays

我需要访问同一个数组中返回的2个不同行的数据

这是一张照片 enter image description here

我需要访问first_name和last_name

这是我的剧本

<?php
ini_set('display_errors', 1);

include_once('db.php'); // database class
$dbase['host'] = 'asdf';
$dbase['user'] = 'asdf';
$dbase['pass'] = 'asdf';
$dbase['name'] = 'asdf';
$db = new DB($dbase);

// SELECT `meta_value` FROM `wp_usermeta` WHERE `meta_key`='password'

$result = $db->query("SELECT * FROM `wp_usermeta` WHERE `meta_key`='user_email'");
while ($row = $result->fetch_array()) {
    echo $row['meta_value'];
}
?>

对此问题的任何帮助都将非常感激!

3 个答案:

答案 0 :(得分:2)

尝试此查询..

SELECT 
wp1.meta_value AS first_name, 
wp2.meta_value AS last_name
FROM 
wp_usermeta wp1
INNER JOIN
wp_usermeta wp2
ON ( wp1.user_id = wp2.user_id )
WHERE 1
AND wp1.meta_key = "first_name"
AND wp2.meta_key = "last_name";
GROUP BY wp1.user_id;

答案 1 :(得分:0)

您已经遍历这些行,只需检查meta_key。

$fname="";
$lname="";

while ($row = $result->fetch_array()) 
{
  if ($row['meta_key'] == "first_name")
  {
   $fname = $row['meta_value'];
  }
  else if ($row['meta_key'] == "last_name")
  {
    $lname = $row['meta_value'];
  }
}

echo $fname . " " . $lname;

最后,你的sql不正确:

SELECT * FROM `wp_usermeta` WHERE `user_id` IN (SELECT `user_id` FROM `wp_usermeta` WHERE `meta_key` = 'user_email' AND `meta_value` = "$user_email_passed_in")

答案 2 :(得分:0)

在这种情况下,你正在做的MySQL查询是错误的。

可能是

$result = $db->query("SELECT * FROM `wp_usermeta` WHERE (`meta_key`='first_name' OR `meta_key`='last_name')");

在这种情况下,将返回与'meta_key'字段中的'first_name'或'last_name'匹配的所有行。

我认为你必须使用user_id字段作为判别来区分这些字段。

祝你好运