2010-02-04 49 views
0

我有一個$ _POST數組,其結果是從顯示的HTML表中選擇(在本例中)3行,其中每行都有一個複選框。這些ID是每行的唯一標識符。

Array 
(
    [checkbox] => Array 
     (
      [0] => 001403166 
      [1] => 001407509 
      [2] => 001407541 
     ) 
) 

我想要的ID收集到的變量,這樣我可以回去和MySQL的處理拉動全行(例如,刪除等) - 有點像〜

$var1 = 001403166 
$var2 = 001407509 
$var3 = 001407541 

我不知道如何做到這一點(並不罕見),甚至不知道它叫什麼,以便我可以找到關於它的信息。謝謝你的幫助!

回答

5

extract函數應該做幾乎你問:從陣列

int extract (array $var_array [, int $extract_type = EXTR_OVERWRITE [, string $prefix ]]) 

變量導入 當前的符號表。


這樣的事情,我想,應該做的伎倆:

extract($_POST['checkbox'], EXTR_PREFIX_ALL , 'var'); 

唯一的事情是,你會得到變量稱爲$var_0$var_1$var_2

  • 計數來自0,而不是來自1,因爲$_POST['checkbox']中的密鑰從開始0。
  • 以及$var與數字之間的'_'。


注意:在使用之前extract,你應該確保$_POST['checkbox']只包含 「乾淨」 的數據!

+0

我以前使用過extract(),但我並不熟悉它的實際功能。你的解決方案工作得非常好。謝謝! – dave 2010-02-04 05:48:00

+1

不客氣:-)玩得開心! *(但不要忘記,使用'extract'會導致麻煩,如果你使用的數據不乾淨/安全!)* – 2010-02-04 05:49:24

1

您可能還會考慮將此數組嵌入到單個字符串中,並使用您的數據庫本機IN()函數來減少爲每個單獨的行運行單個請求。

$uniqueIDs = array(1111,1222,1333); 
$idString = implode(",",$uniqueIDs); 

$query = "SELECT id, col1, col2 
      FROM tableName 
      WHERE id IN ({$idString})"; 

這個查詢出來的是:

SELECT id, col1, col2 
FROM tableName 
WHERE id IN (1111,1222,1333) 

選擇具有列表中發現了一個ID行。

+1

現在,我沒有想到!它是爲了我正在處理的事物而定製的。非常感謝你! – dave 2010-02-04 05:50:44