每个数组值都存储在数据库中PHP

时间:2010-08-17 22:13:26

标签: php mysql

如何让这个数组每个值有一行,例如

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

我希望它们分别存储在一行中,而不是一行存储。

6 个答案:

答案 0 :(得分: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 :(得分:1)

这实际上取决于您使用的数据库,或者您的PHP安装上是否有PDO。

如果你有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

希望有所帮助!

答案 2 :(得分:0)

这一切都取决于数据库表布局和插入查询。为简单起见,您可以遍历数组并插入每个字段。

答案 3 :(得分:0)

你需要使用一个神奇的for循环:

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

foreach($array as $value){

    // insert $value into your database

}

答案 4 :(得分:0)

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

答案 5 :(得分:0)

这取决于许多事情,但通常情况下,您创建两个表来表示数组(至少有一个ID列),另一个表用于item(至少有两列,一个用于数组ID和值)。所以在这种情况下,你有。

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

这样,每行中都有每个项目。

您还应该将Array表中的ID设置为主键,并将Item表中的Array ID设置为与“ON DELETE CASCADE”数组表中链接到ID的外键。

您可以使用left outer join来查询此关系。

希望这有帮助。