将数组(双精度)存储在phpMyAdmin中

|| 尽管我以前在其他上下文中使用过SQL数据库,但我对MySQL还是很陌生。我建立了一个测试站点,该站点具有可以访问phpMyAdmin的在线cPanel。我正在尝试设置一个MySQL数据库,到目前为止,它工作正常(我可以连接到数据库和表)。 我唯一的问题是插入数据。我想将整个数组(具体来说,该数组为
double[]
)插入一列。在查看了phpMyAdmin中可用的列类型之后,似乎不支持插入二进制数组以外的数组。 我已经找到了许多以编程方式插入包括该线程在内的数组的解决方案,但是对于该站点,我们将通过在线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;
如果您不想访问数据,而只是想调用它,则应采用以下方式:(尽管这值得商bat,但如果您想了解更多sql,我仍然建议您采用上述方式) 我假设您将使用PHP,我们将对数据进行序列化(请参阅:http://php.net/manual/zh/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);
}
    
您可以使用
.sql
文件(基本上只是一个充满插入查询的文件)为表导入数据,但是phpMyAdmin不支持从任意数据类型插入数据。如果要在一个表中的多个行中插入一个“ 0”数组,则需要采取一种与所链接线程中的方法类似的方法。 (请注意,您始终可以出于生成
.sql
文件的显式目的编写此类程序,然后将其用于部署。)     

要回复问题请先登录注册