的全套,我有以下mysql_query
我已經放在一個PHP變量:PHP MySQL查詢不返回預期的結果
$equalDimensions_query =
"SELECT 'allEqual' AS COL1,COUNT(*) AS imgCount FROM (
SELECT imgHeight, imgWidth, imgId AS primaryId FROM primary_images
UNION ALL
SELECT imgHeight, imgWidth, primaryId FROM secondary_images
) AS union_table
WHERE primaryId = $imgId AND imgWidth = $maxImageWidth AND imgHeight = $maxImageHeight
UNION ALL
SELECT 'widthEqual' AS COL1,COUNT(*) AS imgCount FROM (
SELECT imgHeight, imgWidth, imgId AS primaryId FROM primary_images
UNION ALL
SELECT imgHeight, imgWidth, primaryId FROM secondary_images
) AS union_table
WHERE primaryId = $imgId AND imgWidth = $maxImageWidth AND imgHeight != $maxImageHeight
UNION ALL
SELECT 'heightEqual' AS COL1,COUNT(*) AS imgCount FROM (
SELECT imgHeight, imgWidth, imgId AS primaryId FROM primary_images
UNION ALL
SELECT imgHeight, imgWidth, primaryId FROM secondary_images
) AS union_table
WHERE primaryId = $imgId AND imgWidth != $maxImageWidth AND imgHeight = $maxImageHeight";
我使用下面的PHP將這些結果放入一個單關聯數組:
$equalDimensions_data = mysql_query($equalDimensions_query) or die('MySql Error' . mysql_error());
while ($row = mysql_fetch_assoc($equalDimensions_data)) {
$cnt[$row['COL1']] = $row['imgCount'];
}
它是假設返回一組三個陣列與值第一個是第一個,第二個是widthEqual
,第三個是heightEqual
(順序無關緊要)。
唉由於某種原因它是不返回allEqual
:
Array
(
[heightEqual] => 0
[widthEqual] => 0
)
當我使用print_r
原文「三陣列」的形式顯示檢索到的數據,我得到的只有相同的結果陣列:
Array
(
[COL1] => heightEqual
[imgCount] => 0
)
Array
(
[COL1] => widthEqual
[imgCount] => 0
)
然而,如果我用print_r
沒有循環如下:
$equalDimensions_data = mysql_query($equalDimensions_query) or die('MySql Error' . mysql_error());
$equalDimensions_array = mysql_fetch_assoc($equalDimensions_data);
print("<pre>");
print_r($equalDimensions_array);
print("</pre>");
我回到了以前缺少allEqual
陣列:
Array
(
[COL1] => allEqual
[imgCount] => 2
)
據我所知,因爲沒有在該while
循環的最後一種情況,我只返回一個的結果;但爲什麼呢,在while
循環的情況下,allEqual
的結果似乎被跳過了?這是我的代碼問題嗎?我感謝您提供的任何幫助。對於這樣一個長期的問題,我表示歉意。我想確保儘可能提供儘可能多的信息。
你可以在這裏下載我的數據庫模式:https://files.me.com/stefanmelnychenko/453l4z
強壓的問題。直接在客戶端運行查詢,以便在圖片中沒有php。在確定查詢沒問題後,你忘記了它不在調試畫面中的sql,那麼php將很容易調試,最後它是一個數組問題,不是diffuclt。 – Melsi
在while循環期間$ row var如何變化?我會看到它是如何隨着調試器發展的。或者甚至將其作爲var_dump作爲第一件事情。如果它有什麼問題,它可能會影響你進一步的陣列構建。 – maraspin
我同意w/Melsi。我的建議也是分解這個問題。首先查明查詢是否返回您的預期結果。然後,嘗試跟蹤$ row變量如何隨着mysql_fetch_assoc調用而變化。如果一切都如你所期望的那樣,那麼在創建它的每一步時都要注意新的陣列。 – maraspin