sql >> Database teknologi >  >> RDS >> Mysql

HTML &PHPMySQL, Indsæt mange data i tabellen fra tekstområdet

Et par ændringer, der burde være tilstrækkeligt:

  • Som RiggsFolly nævnte, er tekstområdet skal flyttes ind i formularen
  • Jeg ville gøre formularens indsendelsesmetode til POST i stedet for GET . På den måde vil dataene ikke blive tilføjet til URL'en (dvs. i forespørgselsstrengen).

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

  • Afgræns det nye linjetegn (dvs. \n ) ved hjælp af dobbelte anførselstegn:f.eks. $lines = explode("\n",$_POST['taname']);

  • Brug mysqli-funktioner (f.eks. mysqli_connect() , mysqli_prepare() , mysqli_bind_param() og mysqli_execute() ) eller PDO-funktioner for at indsætte dataene i databasen

Rediger:

Kaldet til mysqli_bind_param() skal kaldes med alle parametre på én gang, i stedet for én gang pr. parameter. For at gøre dette med et varierende antal parametre skal vi bruge en teknik som den, der er beskrevet i denne 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. Sådan gemmer du JSON-objekt i PostgreSQL ved hjælp af JSONB-datatypen inde i tabel og PostgreSQL JDBC-driver

  2. Sådan ændres eksisterende tabeller til tilføjelse af tidszone

  3. PostgreSQL - afrunding af flydende kommatal

  4. Ved dobbeltnøgleopdatering - flere kolonner