Một vài thay đổi đủ:
- Như RiggsFolly đã đề cập, textarea nên được chuyển vào biểu mẫu
-
Tôi sẽ thực hiện phương pháp gửi biểu mẫu POST thay vì GET . Bằng cách đó, dữ liệu sẽ không được nối vào URL (tức là trong chuỗi truy vấn).
<form method="post" id="testformid">
-
Phân cách ký tự dòng mới (tức là
\n
) sử dụng dấu ngoặc kép:ví dụ:$lines = explode("\n",$_POST['taname']);
- Sử dụng các hàm mysqli (ví dụ: mysqli_connect () , mysqli_prepare () , mysqli_bind_param () và mysqli_execute () ) hoặc chức năng PDO để chèn dữ liệu vào cơ sở dữ liệu
Chỉnh sửa:
Lệnh gọi tới mysqli_bind_param () phải được gọi với tất cả các tham số cùng một lúc, thay vì một lần cho mỗi tham số. Để thực hiện việc này với nhiều thông số khác nhau, chúng ta phải sử dụng kỹ thuật như kỹ thuật được mô tả trong bài viết này .
<?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>