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

标签 php mysql forms

我需要一些帮助来弄清楚如何从多行文本区域在 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),插入到表中。

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

谁能帮我写这个脚本?

提前谢谢你

电脑

最佳答案

$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);

因为您的示例文本在 |

周围没有空格

此外.. list 不会将元素转换为 $_POST 变量

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

应该是

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

关于php - 如何从文本区域字段插入mysql多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7781267/

相关文章:

php - session 提前结束

php - 为什么 Laravel API 在 POST 和 PUT 方法上返回 419 状态码?

PHP session 被过早销毁

php - 输出 mysql_fetch_array 而不将其放入变量

mysql - 如何从 Putty 中纠正 MySQL 语法错误

php - 测试我的 php 脚本和表单

jquery - 使用 Sweet Alert 和 jquery 进行表单输入

php - MySql 插入到具有最高 ID 的行

php - 从 MySQL 中选择最后 N 行 - codeigniter

php - Symfony2 表单在提交时编码密码