Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将变量发布到变量名称,PDO是否可以?_Php_Mysql_Pdo_Http Post_Sql Injection - Fatal编程技术网

PHP将变量发布到变量名称,PDO是否可以?

PHP将变量发布到变量名称,PDO是否可以?,php,mysql,pdo,http-post,sql-injection,Php,Mysql,Pdo,Http Post,Sql Injection,这样做有什么不对吗?我到处都找过了,这似乎不是一件平常的事?有没有我不知道的内置函数可以实现这一点?我使用PDO的输入,所以我认为这是好的 谢谢你的帮助 foreach($_POST as $post => $var){ ${$post} = $var; } 警告 这绝对不是你想做的。你 在任何意义上,我们都应该避免对超全局函数做这样的事情。 你最好尽可能地控制好每一个方面,并且 在最佳实践允许的情况下,正确分配变量。i、 e $a = 'derp'; 您正在做的事情被调用

这样做有什么不对吗?我到处都找过了,这似乎不是一件平常的事?有没有我不知道的内置函数可以实现这一点?我使用PDO的输入,所以我认为这是好的

谢谢你的帮助

foreach($_POST as $post => $var){
    ${$post} =  $var;
}
警告 这绝对不是你想做的。你 在任何意义上,我们都应该避免对超全局函数做这样的事情。 你最好尽可能地控制好每一个方面,并且 在最佳实践允许的情况下,正确分配变量。i、 e

$a = 'derp';

您正在做的事情被调用并内置到PHP中。它本质上允许您动态创建变量以在当前范围内使用

获取以下内容的
$\u POST
数组:

Array (
    [a] => 'derp'
)
现在,使用当前代码,您将动态创建并分配一个变量:

foreach($_POST as $post => $var){
    ${$post} =  $var;
}
反过来,允许您访问所述变量作为键:

echo $a; // would echo out derp
根据个人经验,这并不总是必要的,您可能会遇到的一个问题是覆盖已设置的变量,从而产生不需要的/无法解释的输出


您最好阅读以下答案,以便更广泛地了解您当前的工作:

  • (特别值得一读,如果你想驾驭超地球的话)

基本上就是
extract()
。为什么你认为它与PDO有关?不,不要这样做。用户可以用它修改任何变量,包括$GLOBALS、$\u SESSION、$\u SERVER等等。允许用户填充任意变量更像是你被黑客攻击的方式:
\u SESSION[user]=admin
@Gumbo我将修改答案,以说明OP通过使用它实际在做什么。