1

我的 $_POST 名称是:$_POST[p_new_1]、$_POST[p_new_2]、$_POST[p_new_3] 等取决于 $_POST[number] 的值(上面是 $_POST[number] 等于 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

4 回答 4

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]."')");
}
于 2013-08-29T08:57:34.660 回答
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."')");
  }
}
于 2013-08-29T08:54:27.863 回答
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].")");
}
于 2013-08-29T08:55:30.110 回答
0

好吧,以我非常有限的知识,我可以发现一个问题:

变量需要用双引号括起来,才能正确地将其值传递给查询:

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

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

于 2013-08-29T09:01:21.490 回答