【问题标题】:PHP MYSQL - Highlight a database table row IF table1.id exists in table2PHP MYSQL - 如果 table1.id 存在于 table2 中,则突出显示数据库表行
【发布时间】:2012-11-13 17:32:55
【问题描述】:

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

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

提前致谢。

【问题讨论】:

    标签: php phpmyadmin compare record highlight


    【解决方案1】:

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

    if (mysql_num_rows($hasreservationqueryresult) > 0)
    

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

    【讨论】:

    • 就是这样!非常感谢您的快速回复。编辑:接受可能在 5 分钟内。
    【解决方案2】:

    mysql_query 不返回受影响的行数。

    我觉得有点像

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

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

    【讨论】:

    • hasreservationqueryresult
    • PHP 是一门难以接受命名约定的语言,因为它不遵循自己的命名约定(开源且没有足够的限制)。然而,选择一个约定并在代码中遵循它总是一个好主意。变量名称中的单词之间有下划线,或者 CamelCase 很常见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    • 2014-06-17
    相关资源
    最近更新 更多