表中的用户数据与另一个表有关?

时间:2013-04-20 22:35:01

标签: php mysql function join

我想创建一个获取表数据的函数,其中第一个表users中的用户名与第二个表pets中的所有者相同。我希望能够使用$pet_data['fieldname']pet_data['fieldname']来回忆字段中的任何项目。一般答案都没问题,因为我可以编辑代码xD这是我的user_data函数,我尝试过应用我想要的,但不起作用:

function user_data($user_id) {
  $data = array();
  $user_id = (int)$user_id;
  $func_num_args = func_num_args();
   $func_get_args = func_get_args();
  if ($func_num_args > 1) {
    unset($func_get_args[0]);
    $fields = '`' . implode('`, `', $func_get_args) . '`';
    $data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `users` WHERE `user_id` = $user_id"));
    return $data;
  }
}

1 个答案:

答案 0 :(得分:0)

用以下内容替换您的查询:

SELECT $fields FROM `users`, `pets`
WHERE `user_id` = $user_id
AND `owner` = $user_id

$fields可能包含userspets的列名。如果列名称存在歧义,则必须通过完全限定它们来解决它们(例如users.user_id)。

以下是您的代码的可能更新:

$fields = '`' . implode('`, `', $func_get_args) . '`';
$data = mysql_query("SELECT $fields FROM `users`, `pets` WHERE `user_id` = $user_id AND `owner` = $user_id");
if ($data === false) {
    die("error on mysql_query: ". mysql_error());
}
$data = mysql_fetch_assoc($data);