कुछ परिवर्तन जो पर्याप्त होने चाहिए:
- जैसा कि रिग्सफॉली ने उल्लेख किया है, textarea फ़ॉर्म में ले जाया जाना चाहिए
-
मैं फॉर्म सबमिट विधि POST . कर दूंगा इसके बजाय प्राप्त करें . इस तरह डेटा यूआरएल में नहीं जोड़ा जाएगा (यानी क्वेरी स्ट्रिंग में)।
<form method="post" id="testformid">
-
नई पंक्ति वर्ण को परिसीमित करें (अर्थात
\n
) दोहरे उद्धरण चिह्नों का उपयोग करना:उदा।$lines = explode("\n",$_POST['taname']);
- mysqli फ़ंक्शन का उपयोग करें (उदा. mysqli_connect() , mysqli_prepare() , mysqli_bind_param() और mysqli_execute() ) या पीडीओ फ़ंक्शन डेटाबेस में डेटा डालने के लिए
संपादित करें:
mysqli_bind_param() पर कॉल करें एक बार प्रति पैरामीटर के बजाय, सभी पैरामीटर के साथ एक बार कॉल किया जाना चाहिए। पैरामीटरों की अलग-अलग संख्या के साथ ऐसा करने के लिए, हमें यह लेख ।
<?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>