使用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