PHP MYSQL - 突出显示数据库表行IF table1.id存在于table2中

时间:2012-11-13 09:26:59

标签: php phpmyadmin compare record highlight

我有点被困在这里一段时间也许你们可以帮助我吗?我想突出显示一个数据库记录表,来自一个表,并检查该表中的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 .""; 
}

不幸的是,这会返回突出显示的所有表格,而不仅仅是真正有预订的表格。我做错了什么?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您似乎没有检查行数。你需要改变你的if语句:

if (mysql_num_rows($hasreservationqueryresult) > 0)

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

答案 1 :(得分:1)

mysql_query不会返回受影响的行数。

我认为像

if($ hasreservationqueryresult&amp;&amp; mysql_num_rows($ hasreservationqueryresult)&gt; 0)

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