我试图找出如何采取多字输入一个文本框的形式由逗号(,),然后根据逗号和插入到数据库的每个字作为单独的记录削减字分开每个词。
我的想法是采取输入
然后使用爆炸以dB为PHP分离出的话,和存储的功能,但我不知道如何在数据库存储。
Answer 1:
我认识了一帮mysql_ *函数的答案是要来的,所以生病加入准备好的查询路线。
这并非完美无缺,但你会得到的想法
// Get the array of words
$words = explode( ',', $formname );
// Create an array of :word1, :word2, :word3, etc for use in binding
foreach( range( 1, count( $words ) ) as $wordnumber ) {
$bind[] = ':word'.$wordnumber;
}
// Create the sql query
$sql = sprintf( "insert into table ( word ) values ( %s )", implode( '),(', $bind ) );
// Prepare the query
$stmnt = $pdo->prepare( $sql );
// Bind each word
foreach( $words as $k => $word ) {
$stmnt->bindValue( ":word" . ++$k, $word );
}
// Execute
$stmnt->execute();
Answer 2:
你可以用PDO做到这一点:
//Connect safely to your database
try {
$db = new PDO("mysql:host=localhost;dbname=test", 'root', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
} catch (PDOException $e) {
die('Cannot connect to mySQL server. Details:'.$e->getMessage());
}
if ($_SERVER['REQUEST_METHOD']=='POST' && !empty($_POST['words'])) {
$sql = "INSERT INTO words_table (word) VALUES (:word)";
$stmt = $db->prepare($sql);
$stmt->bindParam(':word', $word);
foreach (explode(',', $_POST['words']) as $word) {
$word = trim($word);
if (empty($word)) {
continue;
}
$stmt->execute();
}
}
//Your form
?>
Words
Answer 3:
$str = $_POST['words'];
$piece = explode(',',$str);
foreach($piece as $substr){
mysql_query("INSERT INTO test (words) VALUES ('".$substr."');";
}
Answer 4:
如果您需要封装词语的报价,这应该做的伎俩:
$myString='sometext,someothertext,and something else';
$query="insert into table1 (columnName) values (('".str_replace(',',"'),('",$myString)."'))";
echo $query;
?>
输出:
insert into table1 (columnName) values (('sometext'),('someothertext'),('and something else'))
这将在适当的根据插入多条记录的mysql插入多个值的语法 。
文章来源: HTML form input field with comma separated