2010-08-17 26 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查询这种关系。

希望这会有所帮助。

相关问题