sql >> Database >  >> RDS >> Mysql

HTML &PHPMySQL, voeg veel gegevens in de tabel in vanuit het tekstgebied

Een paar veranderingen die zouden moeten volstaan:

  • Zoals RiggsFolly al zei, het tekstgebied moet worden verplaatst naar het formulier
  • Ik zou de formulierverzendmethode POST maken in plaats van GET . Op die manier worden de gegevens niet toegevoegd aan de URL (d.w.z. in de queryreeks).

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

  • Scheid het nieuwe regelteken (d.w.z. \n ) met dubbele aanhalingstekens:bijv. $lines = explode("\n",$_POST['taname']);

  • Gebruik mysqli-functies (bijv. mysqli_connect() , mysqli_prepare() , mysqli_bind_param() en mysqli_execute() ) of BOB-functies om de gegevens in de database in te voegen

Bewerken:

De aanroep van mysqli_bind_param() moet met alle parameters tegelijk worden aangeroepen, in plaats van één keer per parameter. Om dit te doen met een variërend aantal parameters, moeten we een techniek gebruiken zoals beschreven in dit artikel .

    <?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. phpMyAdmin op MySQL 8.0

  2. MYSQL LEFT JOIN ONJUIST RESULTAAT

  3. Kan Count(*) ooit null retourneren?

  4. sla strings van willekeurige lengte op in Postgresql