我对MySQL很新,虽然我以前在其他环境中使用过SQL数据库。我有一个测试站点设置,其中有一个可以访问phpMyAdmin的在线cPanel。我正在尝试设置MySQL数据库,到目前为止它工作正常(我可以连接到数据库和表)。
我遇到的唯一问题是插入数据。我想将整个数组(具体来说,数组将是double[]
)插入一列。在查看phpMyAdmin中可用的列类型之后,它似乎不支持插入二进制数组以外的数组。
我发现了许多以编程方式插入数组的解决方案,包括this线程,但是对于这个站点,我们将通过在线cPanel插入数据。有没有办法做到这一点?
答案 0 :(得分:0)
您可以导入具有.sql
文件的表的数据(基本上只是一个充满插入查询的文件),但phpMyAdmin不支持从任意数据类型插入数据。如果要将double[]
数组作为多个行插入表中,则需要采用与所链接的线程类似的方法。
(请注意,您始终可以编写此类程序,以明确生成.sql
文件,然后将其用于部署。)
答案 1 :(得分:0)
如果你想访问那些数据,并希望能够使用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);
}