我正在尝试学习如何使用JOIN
,INNER JOIN
,LEFT JOIN
和RIGHT 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
没有显示任何内容?这有什么不对?
答案 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改为使用mysqli或pdo并使用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和参数化查询