2014-09-28 5 views
1

Я хотел бы дать приращение имени переменной для каждого значения post и взять назначенный массив переменных и build. Ниже то, что я пытался

$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 = 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(); 
+4

Держу пари, вы действительно не хотите этого делать. Пожалуйста, объясните, чего вы пытаетесь достичь. Существует почти определенно лучший способ сделать это. – RiggsFolly

+0

@RiggsFolly см. Редактирование. – user2666310

ответ

0

Плохой и грязный способ не делать это (без гарантии)

$list = implode(" ", $list); 
eval($list) 

Теперь у вас есть $ var_1, $ var_2. :)

Остерегайтесь, eval опасен, не используйте его.

0

Вы можете достичь первой части со списком: в этом примере PHP Assign array to variables

Вы можете пропустить все это и сделать что-то вроде этого:

$vars = $_POST 

и использовать массив как есть (ovbiously вас необходимо дезинфицировать данные, прежде чем делать это

или вы можете выбрать один из следующих способов:. Fastest way to add prefix to array keys?

Вы можете также разместить массив из формы (если его форма то будет заселять ваш POST) увидеть ответ на этот пост Posting array from form

Тогда вы могли бы сделать:

$vars = $_POST['data_array_name']; 

(и дезинфицировать его тоже)

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 и т. д.

Смежные вопросы