我有一个带有表“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/