php - 来自url数组的for循环中的动态mysql_query

时间:2013-07-10 11:01:14

标签: php mysql for-loop

我在堆栈上寻找类似的东西,但没有完全如此。

我(我想)我需要在循环中生成一个唯一的MySQL查询,因为每次迭代都需要查找不同的表。循环来自爆炸的$ _GET数组。

问题是基于循环迭代创建一个名称不同的mysql查询。我已经完成了$ var名称不同但它不起作用的地方,我认为因为它是一个字符串而不是一个变量?

任何帮助表示赞赏

$temps = explode(",", $_GET['temps']);
$tempCount = count($temps); 

for ($i=0; $i<$tempCount; $i++)
{
/*'normal' database lookup
$check = mysql_query("SELECT * FROM _db_".$temps[$i]."");       
    $checks = array();
    while ($row = mysql_fetch_assoc($check)) {
    $checks[] = $row;
    }*/


//here's where I'm trying to build a 'dynamic' lookup for each loop iteration

$checkTemp=$check.$temps[$i];
$checkTempArray=$check.$temps[$i].'Array';

$checkTemp = mysql_query("SELECT * FROM _db_".$temps[$i]."");       
    $checkTempArray = array();
    while ($row = mysql_fetch_assoc($checkTemp)) {
    $checkTempArray[] = $row;
    }
}

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您正试图SELECT *

中所有以,分隔的表格$_GET["temps"]
$temps = explode(",", $_GET['temps']);
$tempCount = count($temps); 

$allResults = array();
for ($i=0; $i<$tempCount; $i++)
{
    $checkTemp = mysql_query("SELECT * FROM _db_".mysql_real_escape_string($temps[$i]));
    $allResults[$temps[$i]] = array();
    while ($row = mysql_fetch_assoc($checkTemp))
    {
        $allResults[$temps[$i]][] = $row;
    }
}
// Now for example $allResults["john"][3] contains the fourth row in the table _db_john
print_r($allResults["sally"][2]); // print the third row in _db_sally

答案 1 :(得分:0)

似乎是代码中的拼写错误

$checkTemp = mysql_query("SELECT * FROM db".$temp[$i].""); 

使用

$temps[$i] or just  $temp 
$temp[$i] doesn't makes any sense

所以你的查询应该是

$checkTemp = mysql_query("SELECT * FROM db".$temps[$i]."");  

编辑: 对于您的数组部分,您可以使用

 $$temp = array();
 while ($row = mysql_fetch_assoc($checkTemp)) {
    $$temp[] = $row;
 }