mysql - 在 phpMyAdmin 中存储数组( double )

标签 mysql insert phpmyadmin

虽然我之前在其他环境中使用过 SQL 数据库,但我对 MySQL 还是个新手。我设置了一个测试站点,其中有一个可以访问 phpMyAdmin 的在线 cPanel。我正在尝试设置一个 MySQL 数据库,到目前为止它工作正常(我可以连接到数据库表)。

我遇到的唯一问题是插入数据。我想将整个数组(具体而言,该数组将是一个 double[])插入到一列中。查看 phpMyAdmin 中可用的列类型后,它似乎不支持插入二进制数组以外的数组。

我找到了许多以编程方式插入数组的解决方案,包括 this线程,但对于此站点,我们将通过在线 cPanel 插入数据。有办法吗?

最佳答案

如果您想要访问该数据,并希望能够使用 SQL 的强大功能在您的 double[] 中进行搜索,您应该这样做:

首先,您应该花一些时间研究关系数据库。它们允许您创建链接数据。

每个关系数据库的一个重要部分是使用好的键。键是行的唯一标识符,可让您以高效的方式访问该行的数据。

关系数据库的另一个重要部分是索引。索引不需要是唯一的。但是,如果您尝试在它们上进行搜索(SQL 已经根据一列或一组列创建了表的“索引”)

如果您想创建一个包含 double [] 数组的表,您可以改为创建第二个表,该表通过第一个表的主键与第一个表关联。

CREATE TABLE base (
    base_id INT AUTO_INCREMENT,
    name    VARCHAR(32),
    PRIMARY KEY(base_id)
);

CREATE TABLE darray (
    base_id INT,
    data    DOUBLE,
    INDEX(base_id)
);

要获取所需的信息,您可以选择使用 JOIN 语句。如果想获取所有base_id为3的信息,可以这样写:

SELECT * FROM base
    JOIN darray ON darray.base_id = base.base_id
WHERE base.base_id = 3;

使用别名编写的高级形式

SELECT * FROM base b
    JOIN darray d ON d.base_id = b.base_id
WHERE b.base_id = 3;

如果你不想访问数据,而只是记忆它,你应该这样做:(虽然这是值得商榷的,但我仍然推荐上面的方式,如果你愿意学习更多的sql )

我假设您将使用 PHP,我们将序列化数据(参见:http://php.net/manual/en/function.serialize.php)

请注意,我们不会有 darray 表,而是添加一个

data    BLOB

到基表。

插入 PHP 序列化数据

<?php
$serializedData = serialize($darray);
$result = mysql_query("INSERT INTO base (name, data) VALUES('a name', '$serializedData ')");

获取序列化数据

<?php
$result = mysql_query("SELECT data FROM base WHERE base_id=3");
if($result && mysql_affected_rows($result) > 0) {
    $serializedData = mysql_result($result, 0, 'data');
    $darray = unserialize($serializedData);
}

关于mysql - 在 phpMyAdmin 中存储数组( double ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5671117/

相关文章:

sql - MySQL慢查询

php - 如何修复在 php 中使用 while 循环不显示任何数据的问题

PHPMyAdmin(错误代码 : 13 - Permission denied)

mysql - PhpMyAdmin 授予和权限

php - 获取最近 7 天和最近 24 小时之间的数据 MySQL

php - Drupal 设置文件不存在

PHP MYSQL INSERT 不工作?

mysql - 将信息数组插入 MySQL 数据库时出现问题

PHP&MYSQL - 向数据库插入数据失败

phpmyadmin - 如何在 phpMyAdmin 中增加导入大小限制