首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在phpMyAdmin中存储数组(双倍)

问在phpMyAdmin中存储数组(双倍)
EN

Stack Overflow用户
提问于 2011-04-15 00:12:51
回答 2查看 6.9K关注 0票数 2

我对MySQL非常陌生,尽管我以前在其他上下文中使用过SQL数据库。我已经设置了一个测试站点,它有一个在线cPanel,可以访问phpMyAdmin。我正在尝试设置一个MySQL数据库,到目前为止它运行良好(我可以连接到数据库和表)。

我唯一的问题是插入数据。我想将整个数组(特别是数组将是一个double[])插入到一个列中。在查看了phpMyAdmin中可用的列类型之后,它似乎不支持插入除二进制数组之外的数组。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-15 01:04:56

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

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

每个关系数据库的一个重要部分是使用好的键。键是行的唯一标识符,它允许您有效地访问该行上的数据。

关系数据库的另一个重要部分是索引。索引不需要是唯一的。但是,如果您试图搜索它们,则非常有用(SQL已经根据一列或一组列对表进行了“索引”)。

如果希望创建一个具有double[]数组的表,则可以通过第一个表主键创建与第一个表相关的第二个表。

代码语言:javascript
复制
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的所有信息,您可以这样编写:

代码语言:javascript
复制
SELECT * FROM base
    JOIN darray ON darray.base_id = base.base_id
WHERE base.base_id = 3;

用混叠写这篇文章的高级形式

代码语言:javascript
复制
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表,而是添加一个

代码语言:javascript
复制
data    BLOB

到基表。

用PHP序列化数据插入

代码语言:javascript
复制
<?php
$serializedData = serialize($darray);
$result = mysql_query("INSERT INTO base (name, data) VALUES('a name', '$serializedData ')");

获取序列化数据

代码语言:javascript
复制
<?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);
}
票数 0
EN

Stack Overflow用户

发布于 2011-04-15 00:22:23

您可以使用.sql文件(基本上只是一个充满插入查询的文件)为表导入数据,但是phpMyAdmin不支持从任意数据类型插入数据。如果要将double[]数组作为多行插入到表中,则需要采取类似于所链接线程中的方法。

(请注意,您始终可以编写这样的程序,以显式地生成.sql文件,然后用于部署。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5671117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档