PHP mysql_fetch_array 多个表

标签 php mysql

所以我有下面的代码,我尝试将其部分作为登录脚本运行,部分为另一个程序收集一些信息。我的脚本没有出现任何错误,我只是没有从第二个和第三个 mysql_fetch_array 中获取任何信息,我读到这是一个常见问题,但这应该只适用于同一个表。即便如此,我还是遵循了建议的建议并使用 mysql_data_seek 重置 $result。我还尝试使用不同的 $result 和 $row 变量,但我仍然没有从这些查询中获取任何数据。关于我如何做到这一点有什么想法吗?

    $result = mysql_query("SELECT * FROM user WHERE username = '$username'");
    $row = mysql_fetch_array($result);
    $salt = $row['salt'];
    $id = $row['id'];
    $usergroup = $row['usergroupid'];
    $mysql_pass = $row['password'];
    $md5_pass = md5($password.$salt);
    mysql_data_seek ($result, 0);
        if($mysql_pass == $md5_pass)
        {
            $result = mysql_query("SELECT teamid FROM tmnt_members WHERE teamid = '$id'");
            $row = mysql_fetch_array($result);
            $team = $row['teamid'];
            $captain = $row['leader'];
            $cocaptain = $row['coleader'];
            mysql_data_seek ($result, 0);
            $result = mysql_query("SELECT * FROM tmnt_teams WHERE teamid = '$team'");
            $row = mysql_fetch_array($result);
            $teamname = $row['teamname'];
        }

最佳答案

您在第二个查询中缺少 coleaderleader 字段。您的三个查询可以非常简单地写为一个。

SELECT *
FROM user u, tmnt_members m, tmnt_teams t
WHERE u.username = '$username'
AND m.teamid = u.id
AND t.teamid = m.teamid

或者,如果您希望将身份验证保留为单独的查询,您可以执行 SELECT * FROM user WHERE username = '$username' 后跟:

SELECT *
FROM tmnt_members m, tmnt_teams t
WHERE m.teamid = '$id'
AND t.teamid = m.teamid

在撰写本文时,我注意到您的第二个查询中可能存在错误。条件 teamid = '$id' 看起来很奇怪。目前,您正在获取 ID 为用户 ID 的团队。这不可能是正确的,或者如果是的话,你的数据库结构就非常非常奇怪了。我想它应该类似于 memberid = '$id'

另请注意,如果没有第一段中建议的更正,此查询将要求数据库获取 ID 为 $id 的团队的 ID。换句话说,如果查询正确,您可以直接使用 $id

此外,执行 SELECT * 并不是最佳实践;最好明确枚举您想要的所有字段。如果您更改列名称或对数据库进行其他一些修改,您的查询可能仍然有效,但可能不会执行您期望的操作。

关于PHP mysql_fetch_array 多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23667172/

相关文章:

带有表别名的 MySQL INSERT

php - 如何在没有多次查询的情况下确定两个用户是否共享某些信息

php - 如何将日期格式从 DD/MM/YYYY 更改为 YYYY-MM-DD?

mysql - 使用 SELECT INTO OUTFILE 时包含标题吗?

python - 使用 django 在 mysql 数据库上使用 DISTINCT

EC2 中的 MySQL、Glassfish 和 JPA 可在本地主机上运行,​​但不能在生产环境中运行

php - 我如何执行此 SQL 查询?

php - 使用jquery从php获取json数组

php - Laravel Controller 不更新表

MySQL:通过哈希选择:这可能吗?