如何通过外键从两个不同的表中获取所有字段

时间:2013-04-01 14:18:22

标签: php mysql join

我有一个查询作为此功能的一部分:

function user_data($MemberID){ //pass in memberid to get info about user
        $data = array();//data to be returned
        $MemberID =(int)$MemberID;//creating int from this input

        $func_num_args = func_num_args(); //count number of arguments from user data on init.php
        $func_get_args = func_get_args();

        if ($func_num_args >1) { //if more then 1, unset the first element of array 
            unset($func_get_args[0]);

            $fields = '`' . implode('`,`', $func_get_args) . '`';   //taking array and converting to string
            $data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `member`,`oddjob` WHERE `MemberID` = $MemberID"));

                return $data;

我在用户个人资料页面中调用此函数(user_data),以便显示有关它们的一些信息。但是现在我还需要能够显示另一个名为oddjob的表格中的数据。

MemberIDmember表中的主键。 MemberIDoddjob表中的外键。 OddJobIDoddjob表中的主键。

我需要编辑上面的查询,根据MemberID从两个表中提取所有字段。我试过了:

$data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `member` INNER JOIN `oddjob` ON `member.MemberID` = `oddjob.MemberID` WHERE `MemberID` = $MemberID"));

但是当我登录用户个人资料页面时,不断收到以下错误;

警告:mysql_fetch_assoc()期望参数1为资源,布尔值为

这里的任何帮助都会很棒。感谢。

2 个答案:

答案 0 :(得分:1)

肯定有人会告诉你不要使用mysql函数,而是使用mysqli或pdo。您的查询可能看起来像这样

select *
from   member m,
       oddjob o
where  m.MemberID = o.MemberID
and    m.MemberID = $MemberID

答案 1 :(得分:0)

PDO是前进的方式,Go for PDO_MYSQL - http://www.php.net/manual/en/ref.pdo-mysql.php