JOIN表MySQL没有加入PHP

时间:2014-06-06 19:45:59

标签: php mysql sql

我正在尝试学习如何使用JOININNER JOINLEFT JOINRIGHT JOIN。 我有以下用户和生成器表

users
  uid
  username
  password
  email

creator
  id
  uid
  g_name
  g_bio

但我无法加入他们。我尝试JOIN这样:

public function Generator($uid) {
            $g_name=mysql_real_escape_string($uid);
            $query= mysql_query ("SELECT username,g_name,g_bio FROM users JOIN creator ON users.uid = creator.uid");
            $data=mysql_fetch_array($query);

            return $data;
            }

print_r没有显示任何内容?这有什么不对?

2 个答案:

答案 0 :(得分:0)

首先,当您引用两个表时,您需要指定从哪个表中选择每个列:

SELECT 
    users.username,
    creator.g_name,
    creator.g_bio 
FROM users 
JOIN creator ON users.uid = creator.uid

其次,在您的函数中,您传入$uid,然后将其转换为$g_name,但不在查询中的任何位置使用它。假设您希望行匹配此值,则需要添加其他where条件:

WHERE creator.g_name = '$g_name'

最后,don't use the mysql_*() functions改为使用mysqlipdo并使用prepared statements.

答案 1 :(得分:0)

您将函数参数$ uid转义为$ g_name,但您没有使用它。可能是因为"没有发生任何事情" ?您应该以这种方式重写查询:

"SELECT username,g_name,g_bio FROM users
    JOIN creator ON users.uid = creator.uid
    WHERE g_name = '$g_name'"

除此之外,我认为你最好使用PDO和参数化查询