php - 将 PHP 数组保存到 MySQL?

标签 php mysql arrays

将数据数组保存到单个 mysql 字段的好方法是什么?

此外,一旦我在 mysql 表中查询该数组,有什么好方法可以将其恢复为数组形式?

是序列化和反序列化的答案吗?

最佳答案

没有好的方法可以将数组存储到单个字段中。

您需要检查关系数据并对架构进行适当的更改。有关此方法的引用,请参见下面的示例。

如果您必须将数组保存到单个字段中,那么 serialize()unserialize()函数会解决问题。但是您不能对实际内容执行查询。

作为序列化函数的替代,还有json_encode()json_decode() .

考虑以下数组

$a = array(
    1 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
    2 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
);

要将其保存在数据库中,您需要创建一个这样的表

$c = mysql_connect($server, $username, $password);
mysql_select_db('test');
$r = mysql_query(
    'DROP TABLE IF EXISTS test');
$r = mysql_query(
    'CREATE TABLE test (
      id INTEGER UNSIGNED NOT NULL,
      a INTEGER UNSIGNED NOT NULL,
      b INTEGER UNSIGNED NOT NULL,
      c INTEGER UNSIGNED NOT NULL,
      PRIMARY KEY (id)
    )');

要处理记录,您可以执行诸如此类的查询(是的,这是一个示例,请注意!)

function getTest() {
    $ret = array();
    $c = connect();
    $query = 'SELECT * FROM test';
    $r = mysql_query($query,$c);
    while ($o = mysql_fetch_array($r,MYSQL_ASSOC)) {
        $ret[array_shift($o)] = $o;
    }
    mysql_close($c);
    return $ret;
}
function putTest($t) {
    $c = connect();
    foreach ($t as $k => $v) {
        $query = "INSERT INTO test (id,".
                implode(',',array_keys($v)).
                ") VALUES ($k,".
                implode(',',$v).
            ")";
        $r = mysql_query($query,$c);
    }
    mysql_close($c);
}

putTest($a);
$b = getTest();

connect()函数返回一个mysql连接资源

function connect() {
    $c = mysql_connect($server, $username, $password);
    mysql_select_db('test');
    return $c;
}

关于php - 将 PHP 数组保存到 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1978438/

相关文章:

php - MYSQL 用链接数据更新字段

java - 如何让 Android 应用程序与 MySQL 在线数据库一起工作?

mysql - 使用UNION/INNER JOIN使用SQL连接3个表来绘制数据

javascript - 二维数组中数组的笛卡尔积

java - 数组中的元素

php - JQuery td 内联编辑 -> 输入后转到下一个编辑单元格?

php - 查询执行量太大

mysql - SUBSTRING_INDEX 获取第 n 个值

mysql错误1072

javascript - 在 Javascript 中将数组设置为 Map 值