Ein paar Änderungen, die genügen sollten:
- Wie RiggsFolly erwähnte, das Textfeld in das Formular verschoben werden sollen
-
Ich würde die Formularübermittlungsmethode POST machen statt GET . Auf diese Weise werden die Daten nicht an die URL (d. h. in die Abfragezeichenfolge) angehängt.
<form method="post" id="testformid">
-
Begrenzen Sie das Zeilenumbruchzeichen (z. B.
\n
) mit doppelten Anführungszeichen:z.$lines = explode("\n",$_POST['taname']);
- Verwenden Sie mysqli-Funktionen (z. B. mysqli_connect() ). , mysqli_prepare() , mysqli_bind_param() und mysqli_execute() ) oder PDO-Funktionen um die Daten in die Datenbank einzufügen
Bearbeiten:
Der Aufruf von mysqli_bind_param() muss mit allen Parametern auf einmal aufgerufen werden, anstatt einmal pro Parameter. Um dies mit einer variierenden Anzahl von Parametern zu tun, müssen wir eine Technik wie die in dieser 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>