php - 为什么我不能在 php mysql 中显示我的记录?

标签 php mysql records

我的数据库中有记录,但我无法显示它们。有人可以检查我的代码吗?我只是一名业余网络开发人员。感谢您的帮助。

<?php
$groups=mysql_query("SELECT * FROM groups ORDER BY id ASC");
$g_res=mysql_affected_rows();
if($g_res>0)
{
while($row=mysql_fetch_array($groups))
{
    $g_id=$row['id'];
    $g_name=$row['g_name'];

    $members=mysql_query("SELECT * FROM members WHERE group='$g_id'");
    $m_res=mysql_affected_rows();
    if($m_res>0)
    {
        while($row2=mysql_fetch_array($members))
        {
            $m_id=$row2['id'];
            $m_name=$row2['m_name'];
            $m_email=$row2['m_email'];
            echo "<tr><td>$m_name<br/>($g_name)</td><td>$m_email</td></tr>";
        }
    }
    else
    {
    echo "<tr><td colspan=2>Nothing to display</td></tr>";
    }
}
}
else
{
echo "<tr><td colspan=2>Error</td></tr>";
}
?>

通过这段代码,我得到了 else 结果,即 Error。如果我从查询中删除 WHERE group='$g_id',我的所有记录都会随机显示,但我想按组显示我的记录(成员)。

最佳答案

你需要转义reserved words in MySQL像带反引号的 group

SELECT * FROM members WHERE `group` = '$g_id'
                            ^-----^-------------here

当你像这样加入你的数据时,你也可以节省内循环

select g.id as gid, g.g_name, m.id as mid, m.m_name, m.m_email
from groups g
inner join members m on g.id = m.group
order by g.id asc

这更容易,并且会提高性能,因为您不需要执行很多查询,而只需执行一个查询。

另请don't use mysql_* functions in new code . 它们不再维护并且是 officially deprecated . 改为了解准备好的语句,并使用 PDOMySQLi .参见 this article快速了解如何做以及为什么它如此重要。

关于php - 为什么我不能在 php mysql 中显示我的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17274855/

相关文章:

php - 先有鸡还是先有蛋 : How to keep PHP out of public_html if . htaccess 需要链接到它吗?

php - 未创建 MySQL 和 PHP 表

php - 如果 0 行受 PDO 影响,如何返回 false?

java - 在jsp中显示巨大的数组列表

database - 在访问中准备数据库?需要帮忙!

javascript - 如何在各种平台上启动聊天客户端应用程序

php - 如何在 Yii 框架上自定义日志文件?

sql - MySQL 查询以使用多个 WHERE 提取不同的 ID

mysql选择唯一项的最大值

mysql - 所有站点记录都从我的表中删除