我需要一些帮助来弄清楚如何在具有多行的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
答案 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