簡體   English   中英

逗號分隔的HTML表單輸入字段

[英]HTML form input field with comma separated

我試圖弄清楚如何在單個文本框中以表格形式輸入多個單詞,每個單詞之間用逗號(,)分隔,然后根據逗號對單詞進行解析,然后將每個單詞作為單獨的記錄插入db中。

我想到的就是接受輸入

然后使用php的explode功能將單詞分開,並存儲在db中,但是我不確定如何存儲在db中。

我知道一堆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();

您也可以使用PDO來做到這一點:

<?php 
//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
?>
<h1>Words</h1>
<form method="POST" action="">
    <input type="text" name="words"/>
    <input type="submit" name="submit" value="Submit"/>
</form>

如果您需要將這些單詞括在引號中,則可以做到這一點:

<?php

$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插入多個值的語法正確地插入多個記錄。

$str = $_POST['words'];
$piece = explode(',',$str);
foreach($piece as $substr){
    mysql_query("INSERT INTO test (words) VALUES ('".$substr."');";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM