簡體   English   中英

While循環與計數查詢? (PHP / MySQL的)

[英]While Loop with Count Query? (PHP/MySQL)

如何對COUNT查詢使用while循環? 在下面的一系列子查詢中,我為每個表分配了一個靜態值(例如“ PX” AS MySite2,“ GZ” AS MySite2)...

 $sql = "SELECT SUM(num) as num FROM (
  SELECT 'PX' AS MySite2, COUNT(URL) AS num FROM pox_topics WHERE URL = :MyURL
  UNION ALL
  SELECT 'PX' AS MySite2, COUNT(URL) AS num FROM people WHERE URL = :MyURL
  UNION ALL
  SELECT 'GZ' AS MySite2, COUNT(Taxon) AS num FROM gz_life WHERE Taxon = :MyURL
  ) AS X";

$stmt = $pdo->prepare($sql);
$stmt->bindParam(':MyURL',$MyURL,PDO::PARAM_STR);
$stmt->execute();
$Total = $stmt->fetch();

要將MySite2轉換為變量($ MySite2),我只需將其放入while循環中...

while ($row = $stmt->fetch())
{
 $MySite2 = $row['MySite2'];
}

switch($Total['num'])
{
 case 1:

但這不起作用。 我可能只需要修改while ($row = $stmt->fetch()) ,但是我還沒有找到正確的選擇。 另一種可能性是while循環不適用於COUNT個查詢。 不管怎樣,有人可以告訴我解決方案是什么?

我不認為您的查詢返回MySite2列。 試試這個查詢。

SELECT x.MySite2, SUM(num) as num FROM (
SELECT 'PX' AS MySite2, COUNT(URL) AS num FROM pox_topics WHERE URL = :MyURL
UNION ALL
SELECT 'PX' AS MySite2, COUNT(URL) AS num FROM people WHERE URL = :MyURL
UNION ALL
SELECT 'GZ' AS MySite2, COUNT(Taxon) AS num FROM gz_life WHERE Taxon = :MyURL
) AS X group by x.MySite2

這就是我想您要實現的目標...

$sql = "SELECT 'PX' AS MySite2, COUNT(URL) AS num FROM pox_topics WHERE URL = :MyURL
  UNION ALL
  SELECT 'PX' AS MySite2, COUNT(URL) AS num FROM people WHERE URL = :MyURL
  UNION ALL
  SELECT 'GZ' AS MySite2, COUNT(Taxon) AS num FROM gz_life WHERE Taxon = :MyURL";

$stmt = $pdo->prepare($sql);
$stmt->bindParam(':MyURL',$MyURL,PDO::PARAM_STR);
$MySite2 = array();
$stmt->execute();
while ($row = $stmt->fetch())
{
 $MySite2[] = array("mysite" => $row['MySite2'], "num" => $row['num']);
}

然后,您可以輕松求和或以其他方式計算所需的任何/任何

也許您應該更改“ $ MySite2 = $ row ['MySite2'];” 到“ $ MySite2 = $ row ['X'];”

由於整個查詢作為名為“ X”的列返回。

返回的唯一其他列是“ num”,

$ row ['MySite2']不會產生值,因為沒有返回名為'MySite2'的列。

希望這可以幫助。

哇,很抱歉這么密集,但這不是我的錯。 看來PDO和COUNT查詢不能很好地結合在一起。 因此,在我的編程技巧變得更精通之前,我想我需要堅持使用顯示頁面的普通COUNT查詢,然后進行第二個“傳統”查詢,該查詢旨在提供各種數據庫表靜態值(網站和部分) 。 然后,我可以繼續使用更高級的表來從數據庫中提取詳細信息。

Mods:我不知道是否真的應該發布這個答案。 這更多是一種解決方法。 因此,隨時將其從“答案”更改為任何內容。 或者,如果對我來說更容易些,請告訴我,然后我將其刪除並作為評論發布,等等。

此頁面上有很多很棒的技巧,我將其標記為參考。 ;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM