我想创建一个获取表数据的函数,其中第一个表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;
}
}
答案 0 :(得分:0)
用以下内容替换您的查询:
SELECT $fields FROM `users`, `pets`
WHERE `user_id` = $user_id
AND `owner` = $user_id
$fields
可能包含users
或pets
的列名。如果列名称存在歧义,则必须通过完全限定它们来解决它们(例如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);