【问题标题】:How to insert multiple rows from a textarea in MySQL如何从 MySQL 的 textarea 中插入多行
【发布时间】:2015-08-10 17:01:58
【问题描述】:
<html>
<form method="POST" action="insertlines.php">
<textarea name="url" rows="10" ></textarea>
<input type="submit" name="submit" value="Enter">
</form>
</html>

如何将 textarea 的每一行放入 MySQL 行?

我想要的是当我输入时:

John
Peter
Steven 

在 textarea 中,我希望它们在我的数据库中每个具有不同的 id。

【问题讨论】:

  • 假设您的意思是 one textarea 字段中的整个文本,您需要将 phpmyadmin 中的字段设置为“TEXT”数据类型,而不是 varchar,这就是我假设你所拥有的。还是您需要将多个文本区域循环到数据库中?
  • 我想要的是当我输入时:John Peter Steven 在 textarea 中“用输入分隔”,我希望它们在我的 php 数据库中每个具有不同的 id。
  • 那么你所拥有的应该可以工作,只要你按照我提到的正确设置了你的数据类型。 注意,您很容易受到 SQL 注入的影响,因为您将变量直接包含在查询中。

标签: php mysql insert textarea


【解决方案1】:

你必须解析文本,寻找“输入”字符:

<?php
if(isset($_POST['url'])){
    if(strpos($_POST['url'], "\n")){
        $entries = explode("\n", $_POST['url']);
    } else {
        $entries = array($_POST['url']);
    }
    // connect to DB here
    // then iterate over entries
    foreach($entries as $e){
        // build some type of Prepared Statement to protect from SQL Injection
        $q = "INSERT INTO table (col1) VALUES (?)";
        // bind $e to statements
        // Execute SQL statements
    }
    // close DB connection
}
?>

【讨论】:

  • 你错过了第三行的一个括号。
  • @KaloqnTerziev 已修复。当您使用 MySQLi Prepared Statements 时,可以使用?。由于您没有说明您是如何连接到 SQL 数据库或它是什么类型的数据库,所以我不得不做出一些猜测。
【解决方案2】:

试试这个:

$textarea=$_POST['url']
$sql = 'INSERT INTO YourTable(field1,field2,name) VALUES';
foreach(explode("\n", $textarea) as $row) {
$sql.='("field1","field2",.'$row'.)';
} 
$conn->query($sql)

【讨论】:

  • 此答案不会将每个分配给新行,也不能防止 SQL 注入。
  • 您需要逗号来分隔每组值。另外,“field1”和“field2”的用途是什么?
  • @mo.dhouibi 我没有评论你的代码,它确实有效。结果不会回答OP的问题。您的答案会将每个条目提交到新列,而不是新行。如果列数小于条目数,则查询将失败。
  • 我明白了,谢谢大家
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 2017-05-16
  • 2020-02-29
  • 1970-01-01
相关资源
最近更新 更多