我想为每个post值赋予递增变量名,并获取指定的变量和构建数组。以下是我试过的内容
$list = array();
$x = 0;
$prefix = '$var_';
foreach(array_slice($_POST, 1) as $test){
$x++;
$list[] = "{$prefix}{$x} = {$test};":
}
echo implode(" ", $list);
因此,如果我在帖子中有4个值,例如0, a, b, c
,则会回显类似
$var_1 = a; $var_2 = b; $var_3 = c;
我想将所有三个$ vars放在数组中,如下所示,并使用它们的值。这是我被困的地方。有什么帮助吗?
$vars = array($var_1, $var_2, $var_3)
我想要实现的是将动态数据插入到我只知道table_name的表中,
$stmt = $mydb->prepare($sql);//I am able to populate the $sql and $str
$stmt->bind_param($str, $vars);
$stmt->execute();
答案 0 :(得分:1)
我相信您正在寻找extract()功能:
$list = array();
$prefix = 'var_';
$_POST = array("TEST",1,2,3,"XYZ"); // post example
$x = 0;
foreach(array_slice($_POST, 0) as $test) {
$x++;
$list[$prefix.$x] = "{$test}";
}
extract($list);
echo $var_1; // outputs TEST
// print_r($list);
/*
Array
(
[var_1] => TEST
[var_2] => 1
[var_3] => 2
[var_4] => 3
[var_5] => XYZ
)
*/
*使用$_POST
,$_GET
,$_FILES
等功能时,应格外小心。
答案 1 :(得分:0)
这样做的一种糟糕而肮脏的方式(没有安全性)
$list = implode(" ", $list);
eval($list)
现在,您已定义$ var_1,$ var_2。 :)
小心,eval是危险的,不要使用它。
答案 2 :(得分:0)
您可以使用列表实现第一部分:例如PHP Assign array to variables
您可以跳过所有这些并执行以下操作:
$vars = $_POST
并按原样使用数组(在执行此操作之前,您需要清理数据。
或者你可以从这些方法中选择: Fastest way to add prefix to array keys?
您还可以从表单发布数组(如果它是填充POST的表单),请参阅此帖子的答案Posting array from form
然后你可以这样做:
$vars = $_POST['data_array_name'];
(并对其进行消毒)