2011-05-12 63 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文件,该文件确定您希望的每个表的期望类型。