如何将数据存储到MySQL以进行数组输入

时间:2010-06-20 14:30:29

标签: php mysql arrays normalization

希望我的问题对于帖子是正确的。

  <form action="process.php?id=<?php echo intval($order['id']);?>" method="post">
  <ul>
  <?php
  $sd = 'SELECT * FROM download WHERE pid IN ('.$order['pid'].') ORDER BY pid ASC'; // pid IN (3,4,5)
  $qd = $db->rq($sd);
  $no = 1; while($download = $db->fetch($qd)) {
  ?>
  <li>
  <?php echo $no; ?> <?php echo $download['title']; ?>
  <input type="hidden" name="mid[]" value="<?php echo $order['mid']; ?>" />
  <input type="hidden" name="pid[]" value="<?php echo $download['pid']; ?>" />
  </li>
  <?php $no++; } ?>
  </ul>
  <input type="submit" name="submit" value="Submit" /> 
  </form>

输出

  1. 索尼爱立信驱动程序
  2. 索尼爱立信应用
  3. 三星驱动程序
  4. Motorola Drivers
  5. 问题

    1. 如何将数据Output存储(保存)到process.php下面的表格结构
    2. 数据将保存类似这样的内容。

      id | mid | pid | title
      -----------------------------------------
      1  |  1  |  3  |  Sony Erricson Drivers
      -----------------------------------------
      2  |  1  |  3  |  Sony Erricson Apps
      -----------------------------------------
      3  |  1  |  4  |  Samsung Drivers
      -----------------------------------------
      4  |  1  |  5  |  Motorola Drivers  
      -----------------------------------------
      
    3. process.php

      if (isset($_POST['submit']) && !empty($_POST['submit'])) {
      // I'm blur how to get dynamic mid[] & pid[] here
      }
      

3 个答案:

答案 0 :(得分:0)

你可以简单地在$ _POST ['mid']和$ _POST ['pid']数组上循环,如下所示:

for ($i=0; $i<count($_POST['mid']); $i++)
{
  $mid = $_POST['mid'][$i];
  $pid = $_POST['pid'][$i];
}

如果您想传递该项目的名称,您可以像发送'mid'和'pid'字段一样传递它。

答案 1 :(得分:0)

为标题创建第三个隐藏字段,例如:

 <input type="hidden" name="title[]" value="<?php echo $download['title']; ?>" />
 <input type="hidden" name="mid[]" value="<?php echo $order['mid']; ?>" />
 <input type="hidden" name="pid[]" value="<?php echo $download['pid']; ?>" />

现在您可以像这样存储它,假设您的页面已提交到process.php,这就是您应该放在那里的内容:

if (isset($_POST['submit']))
{
  for($i = 0; $i<=count($_POST['title']); $i++)
  {
     $title = mysql_real_escape_string($_POST['title'][$i]);
     $mid = intval($_POST['mid'][$i]);
     $pid = intval($_POST['pid'][$i]);

     // database code
     $query = "insert into table set title = '$title', mid = $mid, pid = $pid";
     // mysql_query and/or more code....
  }
}

答案 2 :(得分:0)

通过访问mid[]变量,您获得pid[]submit的值与检查POST的方式相同:

$mid = $_POST['mid'];
$pid = $_POST['pid'];

由于它们是作为数组发布的,因此它们将是$_POST变量中的数组。您还可以通过以下方式检查各个$ _POST变量的结构或整个$ _POST变量:

var_dump($_POST['mid']);
var_dump($_POST);

这是一个非常有用的函数,用于调试或计算出您不确定其内容的变量。