我有一个带有表“profile_values”的sql数据库(是的,它是一个Drupal数据库),我想用一个查询来获取用户名、标题和公司id。(我在过去做过三次查询,但我想一次完成。)

|   fid   |    uid    |    value

|    4    |    100    |     john
|    8    |    100    |     doe
|    9    |    100    | web developer
|   22    |    100    |   D3239GE77

我使用了不同的字段id(fid)来显示我想要拉取的行之间可以有字段id,但是字段id不会改变,因此4将始终是名字,8将是姓氏,9将是标题,22将是公司id。
我的第一次尝试:
$result = mysql_query("SELECT value FROM profile_values WHERE uid = '$uid' ORDER BY fid ASC");
        while($row = mysql_fetch_array($result)) {

            $userinfo[] = $row['value'];

            $firstname = $userinfo[0];
            $lastname = $userinfo[1];
            $title = $userinfo[10];
            $companyid = $userinfo[12];

        }

但这种方法不起作用,因为根据用户填写的可选字段,可能会有更多或更少的字段介于两者之间。
我需要一种方式说,“在这个数组中,如果fid=4,$firstname=value

最佳答案

$result = mysql_query("SELECT fid, uid, value FROM profile_values WHERE uid = '$uid' ORDER BY fid ASC");
$user = array();
while ($row = mysql_fetch_array($result)) {
    switch ($row['fid']) {
    case 4:
        $key = 'firstname';
        break;
    case 8:
        $key = 'lastname';
        break;
    case 9:
        $key = 'title';
        break;
    case 22:
        $key = 'company_id';
        break;
    default:
        continue 2; // 2 required when using switch inside loop
    }

    $user[$key] = $row['value'];
}

关于php - 查询数据库并将每行的两列放入数组中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10525247/

10-16 23:51
查看更多