我的数据库中有记录,但我无法显示它们。有人可以检查我的代码吗?我只是一名业余网络开发人员。感谢您的帮助。
<?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 . 改为了解准备好的语句,并使用 PDO或 MySQLi .参见 this article快速了解如何做以及为什么它如此重要。
关于php - 为什么我不能在 php mysql 中显示我的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17274855/