如何从文本区域字段插入mysql多个字段

时间:2011-10-15 23:08:26

标签: php mysql forms

我需要一些帮助来弄清楚如何在具有多行的textarea上在mysql数据库上添加多个字段。我想让每一行分成6个值(我的数据库的每个字段一个)。

例如,我有以下几行:

info1|info2|info3|info4|info5|info6

info1|infob|infoc|infod|infoe|infof

info1|info8|info9|info0|info1|info2

info1|info4|info4|info5|info6|info7

每个字段用“|”分隔(那是因为我在网上找到的例子,将在这里发布一些。:)

然后我有以下文件:insert_form.php

<form action="insert_engine.php" method="post">
  <p>
    <textarea name="pctext" id="pctext" cols="100" rows="10"></textarea>
  </p>
  <p>
    <input type="submit" />
  </p>
</form> 

我有insert_engine.php:

<?php
$con = mysql_connect("localhost","USER","PASS");
if (!$con)
{
  die('Could not connect: ' . mysql_error());
}

mysql_select_db("DBNAME", $con);

// assuming the text area value is in $_GET["pctext"]
$lines = explode("\n", $_GET["pctext"]);
foreach($lines as $line) {
  list($FIELD1, $FIELD2, $FIELD3, $FIELD4, $FIELD5, $FIELD6) = explode(" | ", $line);
    $sql="INSERT INTO TABLENAME (FIELD1, FIELD2, FIELD3, FIELD4, FIELD5, FIELD6)
      VALUES
      ('$_POST[FIELD1]', '$_POST[FIELD2]', '$_POST[FIELD3]','$_POST[FIELD4]', '$_POST[FIELD5]', '$_POST[FIELD6]')";

    if (!mysql_query($sql,$con))
    {
          die('Error: ' . mysql_error());
    }
    echo "record added";
}
mysql_close($con)
?> 
<meta http-equiv="refresh" content="2;URL=confirmation.php" />

说实话,我几乎不知道php,我正在学习,通过强制,在线查看示例,然后在我的Linux上测试等等。我从另一个线程中得到了这个:Inserting text from textarea into MySQL database without losing formatting和我我想把它付诸实践。

据我所知,我正在连接到MySQL,选择数据库,从pctext(textarea)获取内容,爆炸每行并突破“|” (管道)然后,使用循环(foreach),插入TABLE。

当我单击表单上的提交按钮时,我转到引擎页面,2秒后我进入确认页面,我的数据库中没有插入任何内容,但我确实有一个空注册表,所以有些事情正在发生。

有人可以帮我这个剧本吗?

提前谢谢

PC

2 个答案:

答案 0 :(得分:1)

$lines = explode("\n", $_GET["pctext"]);

应该是

$lines = explode("\n", $_POST["pctext"]);

因为您的表单方法设置为'post'而不是'get'

同时更改

list($FIELD1, $FIELD2, $FIELD3, $FIELD4, $FIELD5, $FIELD6) = explode(" | ", $line);

list($FIELD1, $FIELD2, $FIELD3, $FIELD4, $FIELD5, $FIELD6) = explode("|", $line);

因为您的示例文本在|

周围没有空格

此外..列表不会将元素转换为$ _POST vars

('$_POST[FIELD1]', '$_POST[FIELD2]', '$_POST[FIELD3]','$_POST[FIELD4]', '$_POST[FIELD5]', '$_POST[FIELD6]')";

应该是

('$ FIELD1','$ FIELD2','$ FIELD3','$ FIELD4','$ FIELD5','$ FIELD6')“;

答案 1 :(得分:0)

你不仅使用$ _GET而不是$ _POST,但是你也缺少常量的语言行为,应引用数组键,但在你使用$ _POST [“FIELD1”]而不是$ FIELD1