我有多个MYSQL SELECT查询相互馈送,第一个选择行id,将它们放在一个数组中,第二个SELECT查询需要使用这些值10,14等,以获取其余的餐馆信息在其他表中,我遇到的问题是第二个查询只是根据数组14中的最后一个值选择最后一个phone_number。
$city= 'london';
$cuisine ='indian';
$sql=(" SELECT restaurant_id FROM restaurants WHERE city = '$city' AND cuisine= '$cuisine' ");
mysql_select_db('RESTAURANTS');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
foreach ($row as $key => $value) {
$i++; // increment $i by one each loop pass
echo "Cart Item $i ______ key = $key | value = $value<br />"; }
$sql1 = "SELECT phone_number FROM restaurants WHERE ($key) IN ($value)";
mysql_select_db('RESTAURANTS');
$retval1 = mysql_query( $sql1, $conn );
if(! $retval1 )
{
die('Could not get data: ' . mysql_error());
}
while($row1 = mysql_fetch_array($retval1, MYSQL_ASSOC))
foreach ($row1 as $k => $v) {
$ii++; // increment $i by one each loop pass
print_r ($v);
}
?>
输出
Cart Item 1 ______ key = restaurant_id | value = 10
Cart Item 2 ______ key = restaurant_id | value = 14
// the phone_number
444444444
仅选择14而不是10的phone_number为什么?我是否需要某种额外的功能来再次遍历数组,我尝试了implode和mysql_value函数,我尝试了所有我能想到的东西,任何帮助表示赞赏。
答案 0 :(得分:0)
您的代码格式错误。如果你使用了正确的缩进,你会发现你的第一个while()循环格式不正确:
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
^--- no {
foreach ($row as $key => $value) {
$i++; // increment $i by one each loop pass
echo "Cart Item $i ______ key = $key | value = $value<br />"; }
因此,它将检索该第一个查询的所有行并输出各个字段。但由于你没有使用正确的包围,下一个代码块(你的下一个sql查询/循环)是第一个while循环的 NOT 的一部分,所以你只执行那个电话号码获取查询的 ONCE 强>
应该是
while(... first query) {
print values
do inner query
while (fetch inner query) {
print values
}
}
答案 1 :(得分:0)
问题似乎是你正在循环访问餐馆ID并运行eacy restaruant的查询,只将该值放入$retval1
- 因此当您使用该数组查询时,它只有最后一个电话号码在它。