我有点被困在这里一段时间,也许你们可以帮助我?我想突出显示来自一个表的数据库记录表,并检查该表中的 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 ."";
}
不幸的是,这会返回突出显示的所有表,而不仅仅是真正有保留的表。我做错了什么??
提前谢谢。
您似乎从未检查过行计数。 您需要更改 if 语句:
if (mysql_num_rows($hasreservationqueryresult) > 0)
现在,这将检查是否返回了 1 个或多个结果(如果您希望在突出显示之前返回 x + 1 个结果,请将其更改为> x)。
mysql_query 不会返回受影响的行数。
我认为类似
if($hasreservationqueryresult &mysql_num_rows($hasreservationqueryresult)> 0)
除此之外,我肯定会更好地安排您的代码,并重新考虑您的变量名称:)