2011-05-12 32 views
2

有沒有一種方法可以自動存儲在$_POST$_GET超全域上的表格中提取數據的自動化(或至少自動化一些過程)?自動處理表格數據

我知道你可以通過foreach循環和其他類型的循環遍歷每個鍵/值對做一些事情,但有很多時候我有其他代碼需要這些數據,但不會在foreach循環內工作。

編輯:這是我能想到的一個例子。假設我有大量的發佈數據並希望將其插入到數據庫中。據我所看到的,做這樣的事情是不可能的,因爲我需要通過插入值到不同的列的各環路:

foreach($array as $key => $value) { 
mysql_query(INSERT INTO table (somecolumn) VALUES($value); 
} 

此外,還有一件事我很想do是從發佈的數據中獲取所有值,並以某種方式將它們分配給一個變量;有點像extract(),但沒有覆蓋其他變量的問題。我能想到的唯一的事情來處理這是以某種方式把數據放到一個數組,但我不知道這麼多更有效:

$data = array(); 
foreach($array as $key => $value) { 
$data[$key] = $value; 
} 

我能想到的最後一個情況是,當我必須在foreach循環之外使用這些數據。如果我修改我的代碼以使所有內容都在foreach循環中執行,那麼我將限制在循環內部保留與表單數據有關的所有內容。如果變量和/或常量是在循環內部定義的,那麼它們不能在其外部訪問,對嗎?我最近一直在使用Java,並且習慣於更嚴格的範圍和嚴格的處理變量的方式:)

我一直在閱讀有關extract()方法,但它看起來有點危險要使用的東西(覆蓋變量,安全漏洞等)。

對於處理大量數據的其他人(可以說25+表單域),你怎麼做?我厭倦了將像$data = $_POST['somedata']這樣的變量分配到別處去使用它們......

謝謝!

+0

詳細闡述「但有很多時候我有其他代碼需要這些數據,但在內部的foreach循環中根本無法工作。」什麼樣的代碼在foreach循環中不起作用? – mellamokb 2011-05-12 20:22:56

+0

剛剛添加了幾個我能想到的例子 – Aaron 2011-05-12 20:49:06

回答

2

我知道你可以通過 陣列循環做 每個鍵/值對的東西的foreach循環等 種循環,但也有 很多次,我有一個需要其他代碼 該數據,但不會 工作時,在foreach循環內 所有。

你有這種情況的例子嗎?

我一直在閱讀有關提取物()方法 一點,但它看起來像一個危險的事情有點 使用 (覆蓋變量,安全 孔等)。

是的,不要使用它。這在以前的PHP版本中實際使用得相當多,並且導致了很多安全問題。

對於任何其他人處理大量 的數據(可以說25+形式 域),你怎麼辦呢?我已經厭倦了像$數據分配變量 = $ _ POST [「somedata」]遍地 其他地方使用他們...

我一般分很多形式的場爲相似的官能團(名,數字,日期等)並且以這種方式處理它們。說實話,我有更多的問題與未檢查的數據進入我的數據庫,然後檢查大量的表單域。

+0

當你說你分割數據頭部組時,你的意思是說你採用了類似的數據,並把每個組放入一個數組中供以後使用? – Aaron 2011-05-12 20:50:51

+1

@Aaron我通常有一個'$ _POST'鍵值的數組,我循環並根據它是什麼類型的數據進行操作。例如,當要求出生日期,年份,月份,美國郵政編碼,信用卡cvv2等數字數據時,我會將其傳遞到數字驗證功能。 – 2011-05-12 20:53:51

+0

我明白了。但是在完成這些驗證功能之後,您如何使用這些數據?我猜我的一個主要問題是我只想在循環內部處理/驗證/準備數據,但實際在其他地方使用它(不在循環中) – Aaron 2011-05-12 21:03:02

0

讓事情發展。在你的html表單和數據庫中,如果你有一個元素'email',那麼確保與你的表匹配,即沒有一個名爲'user_email'的db表。

隔離那些你只需驗證的項目,檢查它們,將它們添加回$ _POST數組中 - 或者相應地失敗或中止。

$_POST['web'] = {do your cleansing here, add any missing http:// kinda thing} 

刪除任何可能已進入$ _POST陣列的提交按鈕。

unset($_POST['submitMe']); 

然後做等價的:

$db->saveNew($_POST); 

其中$ db是一個輕微的層躺滿PDO自動和無故障使用準備好的發言逃跑並保護您的數據庫。

您可以讓您的$ db類獲取一個ini文件,該文件確定您希望的每個表的期望類型。