HTML& PHPMySQL,从textarea将很多数据插入表中

时间:2017-01-02 15:57:45

标签: php html mysql mysqli

您好我正在尝试从一个文本框(文本区域)插入数据,但数据应该由行FIELDS TERMINATED BY '\n'

终止

我的HTML

    <form method="get" id="testformid" action="upload-datas.php">
    <input type="submit" />
</form> 
<textarea form ="testformid" name="taname" id="taid" cols="35" wrap="soft"></textarea>

现在,如果我写这个textare数据,如

1
22
333

如何让 upload-datas.php 终止从表单中获取的数据? P.s这就像CVS文件,但我喜欢让它从textarea插入数据!

1 个答案:

答案 0 :(得分:0)

一些应该足够的改变:

  • 正如RiggsFolly所提到的, textarea 应该移到表格中
  • 我会将表单提交方法 POST 而不是 GET 。这样,数据不会被附加到URL(即在查询字符串中)。

    <form method="post" id="testformid">

  • 使用双引号分隔新的换行符(即\n):   例如$lines = explode("\n",$_POST['taname']);

  • 使用mysqli函数(例如mysqli_connect()mysqli_prepare()mysqli_bind_param()mysqli_execute())或PDO functions将数据插入数据库

编辑:

必须同时使用所有参数调用对mysqli_bind_param()的调用,而不是每个参数调用一次。为了使用不同数量的参数执行此操作,我们必须使用类似于this article中描述的技术。

    <?php
    $lines = array();
    $output = '';
    if(array_key_exists('taname',$_POST) && $_POST['taname']) {
        $lines = explode("\n",$_POST['taname']);

        //define $host, $username, $pw, $databaseName before this
        //$host = 'localhost';...etc...
        $connection = mysqli_connect($host,$username, $pw, $databaseName);
        if ($connection) {
            $paramHolders = array_map(function() { return '?';},$lines);

            //update tablename, column name accordingly 
            $insertQuery = 'INSERT INTO tableName (columnName) VALUES ('.implode('), (',$paramHolders).')';
            $statement = mysqli_prepare($connection,$insertQuery);
            //this will be used as the first param to mysql_stmt_bind_param
            // e.g. 'ssss' - one 's' for each line
            $types = str_repeat('s',count($lines));
            $params = array($statement,&$types);
            //add each line by-reference to the list of parameters
            foreach($lines as $index=>$line) {
                $output .= '<div>inserted line: '.$line.'</div>';
                $params[] = &$lines[$index];
            }
            //call mysql_bind_param() with the varying number of arguments
            call_user_func_array('mysqli_stmt_bind_param',$params);
            $statement->execute();
        }
    }
    ?>
    <html>
        <body>
            <form method="post" id="testformid">
                <textarea name="taname" id="taid" cols="35" wrap="soft"></textarea>
                <input type="submit"/>
            </form>
            <? echo $output; ?>
        </body>
    </html>