sql >> データベース >  >> RDS >> Mysql

HTML&PHPMySQL、textareaからテーブルに多くのデータを挿入します

    十分なはずのいくつかの変更:

    • 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関数 データをデータベースに挿入するには

    編集:

    mysqli_bind_param() の呼び出し パラメータごとに1回ではなく、すべてのパラメータで一度に呼び出す必要があります。さまざまな数のパラメーターでこれを行うには、この記事

        <?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>
    



    1. php pdo implode配列が必要で、mysqlに複数の行を挿入します

    2. PL/SQLを使用してメッセージを表示するためのトリガー

    3. MariaDB CURRENT_TIME()の説明

    4. mysqlまたはpostgresの2つの列の一意の組み合わせ