Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

HTML e PHPMySQL, insira muitos dados na tabela da área de texto


Algumas mudanças que devem ser suficientes:
  • Como RiggsFolly mencionou, a área de texto deve ser movido para o formulário

  • Eu faria o método de envio de formulário POST em vez de GET . Dessa forma, os dados não serão anexados ao URL (ou seja, na string de consulta).

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

  • Delimite o novo caractere de linha (ou seja, \n ) usando aspas duplas:e.g. $lines = explode("\n",$_POST['taname']);
  • Use funções mysqli (por exemplo, mysqli_connect() , mysqli_prepare() , mysqli_bind_param() e mysqli_execute() ) ou funções PDO para inserir os dados no banco de dados

Editar:


A chamada para mysqli_bind_param() deve ser chamado com todos os parâmetros de uma vez, em vez de uma vez por parâmetro. Para fazer isso com um número variável de parâmetros, devemos usar uma técnica como a descrita em este artigo .
    <?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>