0

アクティブな投稿と非アクティブな投稿の数と、特定の投稿の詳細を返すクエリがあります。ここにクエリがあります

$fetch = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM
(SELECT DISTINCT propertyID, streetAddress, city FROM residence.property
WHERE residence.contact.contactEmailAddress1 ='$contactEmailAddress1' AND activePosting = '0') inactposts,
    (SELECT FOUND_ROWS() AS 'inactiveCount') inact,
(SELECT DISTINCT propertyID, streetAddress, city FROM residence.property
INNER JOIN contact ON residence.contact.ContactID = residence.property.ContactID
WHERE residence.contact.contactEmailAddress1 ='$contactEmailAddress1' AND activePosting = '1') actposts,
    (SELECT FOUND_ROWS() AS 'activeCount') act;")
or die('<li class=error>Ooops</li>'.mysql_error());

クエリは私の Web ページで機能します。MySQL Workbench では、次のようなものが返されます。

propID   address        city        inactCount  propID  address     city        actCount
366   110 Main Street   Perinton        1       352    3 Some Place Perinton        3
366   110 Main Street   Perinton        1       353    5 Joe Place  Perinton        3       
366   110 Main Street   Perinton        1       356    111 Main     Perinton        3

私にとっての問題は、サブクエリの結果の 2 つの部分に (私が見つけられる) 識別子がないため、PHP サーバーによって構築された HTML では、リストを非アクティブな投稿 (inactposts) に分割できないことです。 ) およびアクティブな投稿 (actposts)。現在、HTMLはアクティブな投稿のリストのみを返します。一時テーブルの名前である「inactposts」をさまざまな場所に配置しようとしましたが、エラーメッセージが表示されます

HTML 構築を行う PHP は次のとおりです。

if( mysql_num_rows($fetch) ) {
while ($row = mysql_fetch_array($fetch)) {
    $inactiveCount = $row["inactiveCount"];
    $activeCount = $row["activeCount"];
    $storedStreetAddress = $row["streetAddress"];
    $storedCity3 = $row['city3'];
    $error_NumberInactives = "<ul>You have $activeCount active posts and $inactiveCount inactive posts.</ul>";
    $error_List_Actives = "<li>Your $activeCount active posts are:</li>";
    $errorMessages[0] = $error_NumberInactives;
    $errorMessages[1] = $error_List_Actives;
    $errorMessages[] = "<li> $storedStreetAddress, $storedCity3 </li>";
}else{ //error message}

このクエリからサブクエリ結果の個別のリストを作成するにはどうすればよいですか? または、別のクエリが必要ですか?

4

1 に答える 1

0

個々の行が必要な場合は、集計のない別のクエリが必要になります。または、1 つのクエリですべての投稿 (詳細を含む) を選択し、結果を php で解析して、アクティブな投稿と非アクティブな投稿の数をカウントします。

SELECT DISTINCT propertyID, streetAddress, city, activePosting FROM residence.property
INNER JOIN contact ON residence.contact.ContactID = residence.property.ContactID
WHERE residence.contact.contactEmailAddress1 ='$contactEmailAddress1'

ps提供されたコードの外で入力をサニタイズしたと思います。そうでない場合は、サニタイズする必要があります。

于 2013-06-18T19:24:24.977 に答える