php - 一种将数组及其键保存到数据库的有效方法

标签 php mysql arrays performance

我正在尝试将大量变量保存到数据库中,现在这变得很荒谬了。我正在使用 PHP 和 MySQL。

有没有一种方法,我可以一次性获取数组值和数组键(数组键与表列/字段名称完全相同),而无需添加新的变量和表列对。

老实说,我只需要构造 SQL 字符串的帮助,其余的都为我设置。

当我必须存储一个新变量时,我可以将新列添加到数据库表中。

感谢大家的帮助

最佳答案

如果您想从数组创建 SQL 查询,这可能会有所帮助:

// Sample array
$array = array(
             'key1' => 'value1',
             'key2' => 'value2'
             ...
             'key10' => 'value10'
         );

// Get and escape the keys
$keys = array_map('mysql_real_escape_string', array_keys($array));
// Escape the values
$array = array_map('mysql_real_escape_string', $array);
// Build query
$query = "INSERT INTO table(`".implode('`, `', $keys)."`) VALUES('".implode("', '", $array)."')";

mysql_query($query);

在这种情况下,查询看起来像这样:

INSERT INTO
    table(`key1`, `key2` ... `key10`)
VALUES
    ('value1', 'value2' ... 'value10')

如果您有一个多维数组(数组的数组),您可以按如下方式创建查询:

// Sample multidimensional array
$array = array(
             array('key1' => 'value1', 'key2' => 'value2'),
             array('key1' => 'value3', 'key2' => 'value4'),
             array('key1' => 'value5', 'key2' => 'value6')
         );

// Get and escape the keys
$keys = array_map('mysql_real_escape_string', array_keys(current($array)));
// Array to store values for the query
$values = array();
// Loop every row and insert into $values array
foreach($array as $row) {
    // Escape all items
    array_map('mysql_real_escape_string', $row);
    $values[] = "('".implode("', '", $row)."')";
}

$query = "INSERT INTO table(`".implode('`, `', $keys)."`) VALUES ".implode(', ', $values);

mysql_query($query);

在这种情况下,结果查询将是这样的:

INSERT INTO
    table(`key1`, `key2`)
VALUES
    ('value1', 'value2'),
    ('value3', 'value4'),
    ('value5', 'value6')

现在您唯一需要担心的就是为数据库创建相应的列。

关于php - 一种将数组及其键保存到数据库的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2001617/

相关文章:

php - MySQL 代码只在循环中执行一次而不是多次

arrays - 将函数映射到haskell中的列表/数组?

php - 什么更快 - 多个 PDO 查询或数组查询

php - 使用 PHP 通过 OneSignal 发送推送通知

php - 空格返回表中的所有结果

mysql - 对于典型的 Web 使用,将 MySQL 隔离设置为 “Read Uncommitted”(脏读)是否安全?即使有复制?

php - 使用 PHP 和 MySQL 在选择选项上打印所选属性

php - 将上一个和下一个按钮添加到类别产品

javascript - 如何从字符串中取出数字字符并将它们放入数组中?

C++ 将动态指针传递给二维数组