如何输入表$ _POST [name $ i]变量名作为变量

时间:2013-08-29 08:44:29

标签: php html mysql http-post

我的$ _POST名称是: $ _POST [p_new_1],$ _POST [p_new_2],$ _POST [p_new_3]等等取决于$ _POST [number]的值 (上面是$ _POST [数字]等于4)。 现在我需要通过以下方式将该值添加到表中:

mysqli_query($con,"INSERT INTO `tablename` (`Name`) VALUES ('$_POST[p_new_1]')");

但只有当我知道$ _POST [number] = 2时它才有效;有时$ _POST [number]没有大于2的值或值,一般情况下应该是:

if($_POST[number]!=NULL)
for ($i = 1; $i < $_POST[number]; $i++) {
    mysqli_query($con,"INSERT INTO `table` (`Name`) VALUES ('$_POST['p_new_'.$i]')");
}

但是使用这段代码我总是有错误。我也尝试过:

if($_POST[number]!=NULL)
for ($i = 1; $i < $_POST[number]; $i++) {
    mysqli_query($con,"INSERT INTO `table` (`Name`) VALUES ('$_POST['p_new_$i']')");
}

但同样的错误。

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /test.php on line 18

如何正确写出来?

4 个答案:

答案 0 :(得分:2)

你的双引号令这个过程混乱。将其更改为:

if($_POST[number]!=NULL)
for ($i = 1; $i < $_POST[number]; $i++) {
    $key = 'p_new_'.$i;
    mysqli_query($con,"INSERT INTO `table` (`Name`) VALUES ('".$_POST[$key]."')");
}

答案 1 :(得分:1)

试试这个,

if(isset($_POST[number]) and  is_numeric($_POST[number])){
   for ($i = 1; $i < $_POST[number]; $i++) {
      $name=isset($_POST['p_new_'.$i]) ? $_POST['p_new_'.$i] : "";
      mysqli_query($con,"INSERT INTO table (Name) VALUES ('".$name."')");
  }
}

答案 2 :(得分:0)

试试这段代码:

if(($_POST['number']!=NULL) and  (is_numeric($_POST['number'])))
for ($i = 1; $i < $_POST['number']; $i++) 
{
    mysqli_query($con,"INSERT INTO `table` (`Name`) VALUES (".$_POST['p_new_'.$i].")");
}

答案 3 :(得分:0)

嗯,由于我的知识非常有限,我可以发现一个问题:

变量必须是双引号才能将其值正确传递给查询:

".$_POST['p_new_'.$i]."

这可以防止变量被视为字符串。