2012-08-08 88 views
0

我想弄清楚如何在單個文本框中以逗號(,)分隔每個單詞的單個文本框中輸入多個單詞,然後根據逗號分隔單詞並插入db作爲每個單詞作爲單獨的記錄。用逗號分隔的HTML表單輸入字段

我的想法走的是輸入

,然後使用爆炸分離出來的話PHP的功能,並將其存儲在數據庫,但我不知道如何在數據庫存儲。

+0

我有輸入文本字段的表單頁面,我將該輸入值存儲在變量中,然後我使用爆炸來基於逗號分隔值,然後我迷路了。 – 2012-08-08 08:55:48

回答

3

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

如果您需要封裝詞語的報價,這應該做的伎倆:

<?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 insert multiple values syntax插入多條記錄。

+0

但它不會將差異字存儲爲差異記錄,例如。 aditya,laurence,max,raptor這應該作爲每個單詞的單獨記錄輸入。 – 2012-08-08 08:57:35

+0

這是adi的一排,laurence的另一個等等。 – 2012-08-08 08:59:39

+0

@AdityaKumar固定,請參閱編輯。 – Fluffeh 2012-08-08 09:00:57

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

雖然這會起作用,但您可以做Aditya Kumar提出的問題,它可以通過使用多個插入值的單個查詢來完成 - 這樣會更加高效。 – Fluffeh 2012-08-08 09:04:01

+0

好的。會嘗試你的解決方案。謝謝。 – sel 2012-08-08 09:05:23

+0

你可以添加一些解釋嗎? – 2012-08-08 09:14:36

2

您可以用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>