sql >> Databasteknik >  >> RDS >> Mysql

HTML &PHPMySQL, infoga många data i tabellen från textområdet

Ett par ändringar som borde räcka:

  • Som RiggsFolly nämnde, textområdet ska flyttas till formuläret
  • Jag skulle göra formulärsändningsmetoden POST istället för GET . På så sätt kommer inte data att läggas till i URL:en (dvs. i frågesträngen).

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

  • Avgränsa det nya radens tecken (dvs. \n ) med dubbla citattecken:t.ex. $lines = explode("\n",$_POST['taname']);

  • Använd mysqli-funktioner (t.ex. mysqli_connect() , mysqli_prepare() , mysqli_bind_param() och mysqli_execute() ) eller PDO-funktioner för att infoga data i databasen

Redigera:

Anropet till mysqli_bind_param() måste anropas med alla parametrar samtidigt, istället för en gång per parameter. För att kunna göra detta med ett varierande antal parametrar måste vi använda en teknik som den som beskrivs i denna 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. Hur mycket minne kommer att upptas av ett nollvärde i en DB?

  2. MySQL:Uppdatera alla rader i en tabell som matchar resultaten av en annan fråga

  3. JOIN Multiple Table baserat på tidsstämpel och ett annat villkor

  4. Välj värden som uppfyller olika villkor på olika rader?