【问题标题】:insert in database from each line of textarea field by php通过php从每一行textarea字段插入数据库
【发布时间】:2026-01-05 15:30:01
【问题描述】:

我如何从 textarea 字段中插入数据库,每行都是数据库中的一个表

表示我想通过 php 从 textarea 字段的每一行插入数据库

我的信息如下:

Name | FullName | Age

和数据库表:

id (auto insert),
name,
fullname,
age

谢谢

【问题讨论】:

  • 如果您对任何人提供的解决方案感到满意,请不要忘记将其标记为已回答。否则没人会费心回答你。

标签: php mysql database insert textarea


【解决方案1】:

我建议在行尾使用分隔符,然后使用explode()将其转换为数组,这是你可以做的。

//Make sure your text have (,) comma at the end of every line
$text = 'My Name,
         My Full Name, 
         24';
//Convert it into an array
$text = explode(',', $text);
//fetch the value and assign it to variables then do an insert operation
//Use mysql_real_escape_string() to escape SQL injections.
$name = mysql_real_escape_string($text[0]);
$FullName = mysql_real_escape_string($text[1]);
$age = mysql_real_escape_string($text[2]);

然后你可以像这样创建查询。

$query = "INSERT INTO persons(name, fullName, age) values($name, $fullName, $age)";
$result = mysql_query($query);

【讨论】:

    【解决方案2】:
    // assuming the text area value is in $_GET["text"]
    $lines = explode("\n", $_GET["text"]);
    foreach($lines as $line) {
        list($name, $fullName, $age) = explode(" | ", $line);
        mysql_query("INSERT INTO table (name, fullname, age) VALUES ('$name', '$fullName', $age)");
    }
    

    【讨论】:

    • 我会避免循环中的查询。鉴于此代码的知识,任何人都可以很容易地使运行此系统的系统超载。
    • 没人关心注射吗?阅读:*.com/questions/6198104/…
    • 当然注入很重要,但这真的不是“这样做的最佳选择是什么”,而是“如何拆分数据并准备好插入数据库” .
    【解决方案3】:

    希望这会有所帮助:

    // assuming textarea name is $_POST['data']
    $_POST['data'] = 'Jane | Jane Doe | 23
        zxc
    sadas
     John | John Doe | 48
    ';
    
    // Set and trim data 
    $data = (array_key_exists('data', $_POST)) ? trim($_POST['data']) : '';
    
    if ($data !== '') {
        $lines = explode("\n", $data);
        $sql = 'insert into table (name, fullname, age) values ';
        $sql_parts = array();
    
        foreach ($lines as $line) {
            $sql_part = array(
                'name' => null,
                'full_name' => null,
                'age' => null,
            );
    
            // If no divider found, skip this line
            if (strpos($line, ' | ') === false)
            {
                continue;
            }
            list($sql_part['name'], $sql_part['full_name'], $sql_part['age']) = explode(' | ', $line);
    
            // For the sake of this example
            // i will assume all fields are required
            // so let's check for that:
            foreach ($sql_part as $key => $item) {
                // Trim and sanitize the data:
                $item = mysql_real_escape_string(trim($item));
    
                // If any item is empty continue to the next line of data
                if ($item === '') {
                    continue 2;
                }
                $sql_part[$key] = "'".$item."'";
            }
            $sql_parts[] = '('.implode(',', $sql_part).')';
        }
    
        if (empty($sql_parts) === false) {
            $sql .= implode(',', $sql_parts);
            mysql_query($sql);
        }
    }
    

    【讨论】:

      【解决方案4】:

      【讨论】:

        最近更新 更多