0

我有一个简单的表格,内容如下:

<form action="#" method="post" name="form1" >
    <input name="criteria1" size="64">
    <input name="criteria2" size="64">
    <select name="criteria3[]"multiple="multiple" >
        <option value="5 ">5</option>
        <option value="7">7</option>
        <option value="10">10</option>
    </select>
</form>

现在,如果用户从条件 3 中选择了多个选项,我如何将其插入到单个数据库表字段中,以及将其他两个条件插入到他们自己的列中?

我尝试了许多不同的方法,但无处可去。我的最后一次尝试如下:

$values = array();

$type = explode(",", $_POST['criteria3']);

foreach ($type as $value) {
    $values[] = sprintf('(%d)', $value);
}

$values = implode(',', $values);

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
   $insertSQL = sprintf("INSERT INTO table (name, date, number) 
                         VALUES (%s, %s, '$values')",
       GetSQLValueString($_POST['criteria1'], "text"),
       GetSQLValueString($_POST['criteria2'], "text"));

不太确定出了什么问题——已经尝试了几次迭代,但没有得到任何结果。

以下是最近的错误:

Warning: explode() expects parameter 2 to be string, array given in /filename.php on line 84

Warning: Invalid argument supplied for foreach() in /filename.php on line 86
4

4 回答 4

0

由于我是唯一将插入数据的人 - 我找到了一个粗略的工作,直到我可以让 Rajesh 提供的代码工作 - 我认为如果我能让它工作,这是正确的道路。感谢大家输入。如果可以的话,我会给你所有的赞成票!

于 2013-10-24T23:14:10.897 回答
0

尝试以下操作(如果您想要与单个实体的单独值相对应的单独记录):criteria3

$criteria1 = $_POST['criteria1'];
$criteria2 = $_POST['criteria2'];
$arr=$_POST['criteria3'];
foreach($arr as $criteria3)
{
    $sql="insert into table_name (criteria1, criteria2, criteria3) values('".$criteria1."', '".$criteria2."', '".$criteria3."')";
    mysql_query($sql);
}

如果您想要具有多个 -values 的单个实体的单个记录criteria3,请使用以下代码:

$criteria1 = $_POST['criteria1'];
$criteria2 = $_POST['criteria2'];
if(isset($_POST['criteria3'])) //true when at least on of the options is selected.
{
    $criteria3=implode(',', $_POST['criteria3']);
}
else //i.e. when no option is selected.
{
    $criteria3='';
}
$sql="insert into table_name (criteria1, criteria2, criteria3) values('".$criteria1."', '".$criteria2."', '".$criteria3."')";
mysql_query($sql);
于 2013-10-24T15:58:00.040 回答
0

去掉$_POST['criteria3']中的explode函数,因为它已经是数组不需要explode所以你直接试试

       $type = $_POST['criteria3'];

        foreach($type  as $k => $v) {
           // here do the INSERT query with value $v
      }

或者,如果您更喜欢此链接
1)。使用 PHP 从多选下拉列表中获取数据以插入 MySQL

希望这对你有帮助:)

          <form action="" method="post" name="form1" >
<input name="criteria1" size="64">
<input name="criteria2" size="64">
<select name="criteria3[]" multiple >
<option value="5 ">5</option>
<option value="7">7</option>
<option value="10">10</option>
</select>

       <?php
   if(isset($_POST['submit']))
  {
    $criteria1 = $_POST['criteria1'];
    $criteria2 = $_POST['criteria2'];
    if(isset($_POST['criteria3']))
     {
       $query = "insert into table_name (criteria1, criteria2, criteria3) values";
        foreach($_POST['criteria3'] as $list)
         {
          $query .= "('$criteria1','$criteria2','$list')";
          }
         echo $query;                       
     }
  }
  ?>
于 2013-10-24T15:15:54.663 回答
-1

Explode 仅适用于字符串。你从你的标准 3 表单中得到的是一个数组,所以你应该采取相应的行动:

$criteria1 = $_POST['criteria1'];
$criteria2 = $_POST['criteria2'];
$criteria3 = implode(",", $_POST['criteria3']);

在这里,我们根据您的表单返回的表格的内容生成一个字符串。我们用逗号分隔每个元素。

然后我们创建 SQL 查询。

$sql = sprintf("INSERT INTO table (name, date, number) VALUES (%s, %s, %s);", $criteria1, $criteria2, $criteria3);

希望这可以帮助。

于 2013-10-24T14:45:01.643 回答