0

我有点卡在这里一段时间,也许你们能帮帮我吗?我想突出显示来自一个表的数据库记录表,并检查该表中的 id 是否也存在于第二个表中。
让我更具体一点:

Table 1: Projects (projectid pk)
Table 2: Reservations (projectid fk)

一个简单的示例代码,以保持简单:

while( $record=mysql_fetch_array($result) ) 
{
    $projectid=$record['projectid'];
    echo "<tr>". $projectid ."</tr>; 
}

所以这很好用,我得到了数据库中存在的每个 projectid 的所有表行,但是如何将此$projectid变量传递给另一个查询,该查询检查它是否存在于另一个表中,如果存在,则回显出不同的东西?这是我的代码,可能没有多大意义,但至少逻辑在那里......我希望?:

while( $record=mysql_fetch_array($result) ) 
{
    $projectid=$record['projectid'];
    $hasreservationquery = ("
                            SELECT * 
                            FROM reservelist rl
                                INNER JOIN project p on rl.projectid = p.projectid
                            WHERE rl.projectid = $projectid
                            ");
    $hasreservationqueryresult = mysql_query($hasreservationquery) or die(mysql_error());
    if ($hasreservationqueryresult > 1)
    {
    echo "<tr id='hasreservation'>";
    }
    else
    {
    echo "<tr>";
    }
    echo "". $projectid .""; 
}

不幸的是,这会返回所有突出显示的表,而不仅仅是其中真正有保留的表。我究竟做错了什么??

提前致谢。

4

2 回答 2

1

您似乎从未检查过行数。你需要改变你的 if 语句:

if (mysql_num_rows($hasreservationqueryresult) > 0)

这现在将检查是否返回 1 个或多个结果(如果您希望在突出显示之前返回 x + 1 个结果,请将其更改为 > x)。

于 2012-11-13T09:29:54.713 回答
1

mysql_query 不返回受影响的行数。

我想像

if($hasreservationqueryresult && mysql_num_rows($hasreservationqueryresult) > 0)

除此之外,我肯定会更好地安排您的代码并重新考虑您的变量名:)

于 2012-11-13T09:32:55.580 回答