使用PHP,對於MySQL查詢結果集中的每一行,我需要執行另一個MySQL查詢。到目前爲止,我已經得到了在PHP循環中追加MySQL結果
$result = mysql_query("SELECT id, state FROM states WHERE region='given_region'")
or die(mysql_error());
while($row = mysql_fetch_row($result))
{
$state = $row['state'];
$r = mysql_query("SELECT * FROM locations WHERE state REGEXP '(^|,)".$state."($|,)'");
}
現在我需要所有的結果$ R的追加到一個結果集,我可以再用一個標準while循環,但是,我非常有限的PHP技能是通過迭代讓我無法獲得代碼來做到這一點。
任何人都可以提供任何有關如何將所有結果追加到給定的while循環內的一個集合的見解嗎?
謝謝!
我確實與更高級的聯接鬥爭,所以我可能會錯,但我不認爲我可以在我的聯接中使用Join案件。我過分簡化了上面的示例。在while循環中的查詢中,我實際上將單個值狀態與逗號分隔列表中的可能值進行匹配。所以'狀態'列實際上是一個狀態列表,我想匹配$ state在列表中的所有行。我修改了上面的示例。 – JToland
@JToland:我強烈建議你[標準化](http://en.wikipedia.org/wiki/Database_normalization)你的模式。但是,如果這是不可能的,你可以用'ON FIND_IN_SET(states.state,locations.state)'替換上面的'USING(state)'' – eggyal
我知道規範化數據肯定是這個長期的最好方法,但不幸的是,這不是我可以輕易改變的(或者至少不夠快以適應我目前的需要)。我用'ON FIND_IN_SET'嘗試了上面的查詢,並且工作得很好!它似乎給了我所需要的,而且比我之前試圖做的更容易,謝謝很多@eyal! – JToland