2013-07-10 2 views
0

Я искал нечто похожее на стеке, но ничего такого, как это.php - dynamic mysql_query in for loop from url array

Мне кажется, что я должен генерировать уникальный запрос 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; 
    } 
} 
+0

что такое '$ check' ?? – swapnesh

+0

$ check не используется – gavin

+0

Что вы подразумеваете под запросом MySQL по-разному? –

ответ

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 
+0

Привет. Я изменил свой код, чтобы показать _db, добавленный с переменной temp. поэтому url '& temps = john, sally' будет искать _db_john и _db_sally – gavin

+0

@gavin Я изменил свой ответ, теперь он сохраняет результаты в массивах. –

+0

Спасибо, я попробую – gavin

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].""); 

EDIT: для массива части вы можете использовать

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

Спасибо, boom_Shiva. Теперь я изменил это. Мне нужно создать динамически созданный массив для последующего поиска. Это не работает – gavin

+0

Я упростил его, просто используя $ temps [i]. – gavin

+0

проверить изменения для этой части – sven