行を解析するクエリと while ループは、行数 > 0 の場合は正しく機能しますが、=0 の場合は機能しません。
返される行数が 0 の場合、while ループ全体がスキップされたように見えます。$activeCount
is forced =0のコメントを参照してください。次のエラー メッセージは実行されず、表示されません。
以下のコードの前に、デフォルトのエラー メッセージが配列 $errorMessages[] に設定され、トリガーが発生したときに更新および追加されます。クエリで 0 行が返された場合、$error_NoActives の更新は行われません。
関連するコードは次のとおりです。
//fetch the user's active posts and their count
$fetch = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM (
SELECT propertyID, streetAddress, city3, city2 FROM residence.property
INNER JOIN contact ON residence.contact.ContactID = residence.property.ContactID
WHERE residence.contact.contactEmailAddress1 ='$contactEmailAddress1' AND activePosting = '1') props,
(SELECT FOUND_ROWS() AS 'activeCount') actives;")
or die('<li class=error>Ooops</li>'. mysql_error());
//create HTML li items to show each posting and create jQuery to insert to a div
$rowCount = 0;
while ($row = mysql_fetch_array($fetch)) {
$activeCount = $row["activeCount"];
//$activeCount = 0; //test - get default error message, seems next 3+ lines are not executing when query has 0 rows
if( $activeCount == 0 ) {
$error_NoActives = "<li>You have $activeCount active postings.</li>";
//don't get this message with 0 active posts, get default error
$errorMessages[0] = $error_NoActives;
} else {
//$activeCount displays correctly if non-zero
$error_NumberOfActives = "<ul>Welcome back. You have $activeCount active postings.
//do stuff using $rowCount. Construct li items.
$rowCount++;
}
}
}
while ループについて、または MySQL の FOUND_ROWS() と SQL_CALC_FOUND_ROWS について、何かを理解していないのではないかと思います。
いずれにせよ、クエリが 0 行を返す場合、$error_NoActives ステートメントは実行されていません。