Php将大量数据插入mysql

时间:2011-04-28 13:49:57

标签: php mysql

您好 我有一个包含300多个字段的评估表,其中有几个部分。我不想在mytable中制作300行。有人可以给我一个方法来保存我的数据,因为它需要很容易回溯来制作一些统计数据。

感谢。

编辑: 像那样有很多不同部分的东西

<form action="" method="post" id="OKF" name="OKF" autocomplete="off">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td width="25%" class="tableft"><strong>Date </strong></td>
          <td width="25%"><input name="controldate" type="number" id="controldate" /></td>
          <td width="25%"><strong>Start Time</strong></td>
          <td><input type="text" name="startime" id="startime" class="required"/></td>
        </tr>
        <tr>
          <td class="tableft"><strong>Controller</strong></td>
          <td><input type="text" name="controller" id="controller" /></td>
          <td><strong>End Time</strong></td>
          <td><input type="text" name="endtime" id="endtime" class="required"/></td>
        </tr>
        <tr>
          <td class="tableft"><strong>Hotel Name</strong></td>
          <td><input type="text" name="otelname" id="otelname" class="required"/></td>
          <td><strong>Company Name</strong></td>
          <td><input type="text" name="compres" id="compres" class="required"/></td>
        </tr>
        <tr>
          <td class="tableft"><strong>No Stars</strong></td>
          <td><input type="text" name="stars" id="stars" class="required"/></td>
          <td><strong>No Room</strong></td>
          <td><input type="text" name="roomnum" id="roomnum" class="required"/></td>
        </tr>
      </table>
      <br>
      <h1>Part 1</h1>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="40%" class="tabtopmid">Question</td>
    <td width="4%" class="tabtopmid"></td>
    <td width="17%" class="tabtopmid"><strong>Point</strong></td>
    <td width="37%" class="tabtopmid"><strong>Comment</strong></td>
  </tr>
  <tr>
    <td>Question 1</td>
    <td>20</td>
    <td><input name="puan_1" id="puan_1" type="text"></td>
    <td><textarea name="cmt_1" id="cmt_1"></textarea></td>
  </tr>
  <tr>
    <td>Question 2</td>
    <td>20</td>
    <td><input name="puan_2" id="puan_2" type="text"/></td>
    <td><textarea name="cmt_2" id="cmt_2"></textarea></td>
  </tr>
  <tr>
    <td>Question 3</td>
    <td>20</td>
    <td><input name="puan_3" id="puan_3" type="text"/></td>
    <td><textarea name="cmt_3" id="cmt_3"></textarea></td>
  </tr>
  <tr>
    <td>Question 4</td>
    <td>20</td>
    <td><input name="puan_4" id="puan_4" type="text"/></td>
    <td><textarea name="cmt_4" id="cmt_4"></textarea></td>
  </tr>
  <tr>
    <td>Question 5</td>
    <td>20</td>
    <td><input name="puan_5" id="puan_5" type="text"/></td>
    <td><textarea name="cmt_5" id="cmt_5"></textarea></td>
  </tr>
</table>
      <input name="submit" type="submit" id="submit" value="Submit" alt="Submit" title="Submit">

4 个答案:

答案 0 :(得分:3)

根据您的字段,建议您制作多个表格

形式  - ID 1

<磷>氮 问题  - ID   - 类型   - 价值  - 标签   - form_id

然后您可以将用户的答案存储在第三个表中

更容易就是像formname [foobar],formname [foobar_1]等名称

然后你可以做类似的事情:

$sql = "INSERT INTO answers (name, value) VALUES ";
foreach ($_POST['formname'] as $key => $value) {
  $sql .= "('".$key."', '".$value."'),";
}
$sql = substr($sql, 0, -1).";";
mysql_query($sql);

请注意,这只是一个例子..没有安全感,没有价值,没有什么

答案 1 :(得分:1)

所以这是酒店登记表,我接受了。

嗯,Questions绝对应该是一个单独的表。然后,我想,应该有Reservations的表(包含hotel_id,room_id,customer_id,日期,有关预订的其他信息)..然后是Customers表和Hotels表,以及Rooms表......可能还有更多。

如果不知道整个字段列表,就无法分辨。

答案 2 :(得分:0)

我从未在一张表中使用过300列。我的建议是使用JSON或列的其他序列化数据技术。在任何情况下,分组相关字段都可以节省时间。

最近使用过;

column = value(variable1:value1-variable2:value2-var3:val3)

adv_room_numbers(text) = "Room:2-Bedroom:3-Kitchen:1-Dining Room:1,etc..room:1,etc..room:1,etc..room:1" // I can use explode() to extract fields
adv_online(enum) = "active"
adv_contact(text) = "Name:Name Surname-Tel:65465-City:Cityname-Address:address details"

答案 3 :(得分:0)

这一切都来自一个大的形式吗?如果是这样,将所有数据放入一个数组,串行化并将其记录到文件中可能是有意义的。然后使用更专业的工具分析数据。

如果你想把它放到一个数据库中,你需要花一些时间来打破模式 - 我相信人们会帮助,但目前,这个定义过于含糊,无法说出任何有意义的内容。

使用框架在前端表单和数据库之间进行映射可能会有所帮助。 Symfony非常适合表单生成 - 您只需将文件写入YAML文件并运行命令。