2010-08-17 64 views
2

我怎樣才能讓這個數組每行都有一行,例如每個數組值都存儲到數據庫|中PHP

array('item1', 'item2', 'item3', 'item4'); 

我希望他們分別存儲一行,而不是一行。

+0

實施取決於你的db方案,請發帖吧...... – 2010-08-17 22:17:15

回答

3
$sql = "INSERT INTO table_name (`column_name`) VALUES (" . implode("), (", $array) . ")"; 

這樣的事情應該這樣做。 SQL語句結構稱爲「擴展插入」。

implode()方法基本上將一個數組與某個字符粘合在一起。看到它的人瞭解更多信息。

編輯

爲了安撫羣衆,你應該在陣列上運行array_filter,以確保正確轉義數據以避免出現錯誤和SQL注入:IE:

$array = array_filter($array, 'mysql_real_escape_string'); 

過濾器部分是「未經測試」,只是一個粗略的例子。它最初被排除在外的原因是沒有顯示實際的sql代碼,我的假設是用戶之前已經考慮到了這一點。

+1

請不要忘記爲了防止SQL注入和其他討厭的東西而轉義值。 – 2010-08-17 22:21:42

0

這一切都取決於數據庫表格佈局和插入查詢。爲了簡單起見,您可以遍歷數組並插入每個字段。

+0

這個答案沒有錯,請解釋倒票。 – 2010-08-18 10:34:59

0

你需要使用一個神奇的for循環:

$array = array('item1', 'item2', 'item3', 'item4'); 

foreach($array as $value){ 

    // insert $value into your database 

} 
0
$statement = $db_connection->prepare("INSERT INTO YOURTABLE(yourColumn) Values(?)"); 
foreach($your_array as $val){ 
    $statement->bind_param("s", $val); 
    $statement->execute(); 
} 
1

這真的取決於你使用的是什麼數據庫,或者如果你有PDO在你的PHP安裝。

如果你有PDO,它會是這個樣子:

//connection details 
$driver = "mysql"; 
$host = "127.0.0.1"; 
$database = "my_database"; 
$username = "username"; 
$password = "password"; 

//connect to the DB 
$pdo = new PDO("$driver:host=$host;dbname=$database",$username,$password); 

//gather your data 
$data = array('item1','item2','item3','item4'); 

//prepare the sql statement 
$sql = "INSERT INTO `table_name` (`column_name`) VALUES (?)"; 
$stmt = $pdo->prepare($sql); 

//iterate over your array 
foreach ($data as $d) { 
    //run the query, passing the data item, which gets passed to the prepared statement 
    $success = $stmt->execute(array($d)); 
} 

如果您想了解更多的細節,去看看the PHP manual

希望有幫助!

0

這取決於許多事情,但通常情況下,您創建兩個表來表示數組(至少有一個ID列)和另一個項(至少有兩列,一個用於數組ID和值)。所以在這種情況下,你有。

 Array table 
+----+ 
| ID | 
+----+ 
| 1 | 
+----+
 Item table 
+----------+--------+ 
| Array ID | Item | 
+----------+--------+ 
|  1 | item1 | 
|  1 | item2 | 
|  1 | item3 | 
|  1 | item4 | 
+----------+--------+

這樣你的每一行中的每個項目。

你也應該在數組表中設置ID是在項目表的主鍵和Array ID被外鍵鏈接到ID在陣表「ON DELETE CASCADE」。

您可以使用left outer join查詢這種關係。

希望這會有所幫助。

相關問題