[MySQL] 如何存储 array比较合适?
把数组变成字符串:比如$a=array{"12","23","34","45"};
$a="12,23,34,45"; 把这个存到数据库中就行了
读取时再用explode变成数组
数组大小不可定,有什么好的办法存储 以便将来查询?
---------------------------------------------------------------
把数组转换成字符串后再存入数据库
参考函数:
implode() ---把数组转换成字符串
explode() ---把字符串转换成数组
序列化以后存储.
---------------------------------------------------------------
对于一维数组可以简单的用
implode
explode
函数做数组——串的变换,但需注意分隔符要使用数组中不存在的字符
对于多维数组可以用序列化函数处理
serialize
unserialize --------------------- 作者:龙图科技 来源:CSDN 原文:https://blog.csdn.net/chakeshe/article/details/49708399?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!
数据库中没法存数组啊,反正我是没见过数组这个类型,你要存这个数组进去的话,先
for循环
遍历一下,用Stringbuffer追加成字符串,然后转成string存数据库吧
因为mysql数据类型不识别数组,
所以基本上都是都是转化为mysql是别的数据类型,
如果说php 用json_encode处理数组后就是字符串了。
直接入库就可以。
只不过出库后需要json_decode($array)。
对于一维数组,可以简单的使用implode函数将数组中的元素重组成字符串的形式储存到数据库中(如果数组中存在不能确定的特殊字符时,就要采用序列化的方法了,如下:)
[c-sharp]
view plain
copy
print
?
-
$arr=array('c1','c2','c3');
-
$con1=implode('|',$arr);
-
$sql=sprintf("insert into array(content) values('%s')",$con1);
-
$result=mysql_query($sql);
$arr=array('c1','c2','c3'); $con1=implode('|',$arr); $sql=sprintf("insert into array(content) values('%s')",$con1); $result=mysql_query($sql);
如果是多维数组的话,则采用将数组序列化的形式,然后存入数据库
[c-sharp]
view plain
copy
print
?
-
$arr=array(array('a','b','c'),array('A','B','C'));
-
$ser=serialize($arr);
-
$sql=sprintf("insert into array(name,content) values('/$arr','%s')",$ser);
-
$result=mysql_query($sql);
$arr=array(array('a','b','c'),array('A','B','C')); $ser=serialize($arr); $sql=sprintf("insert into array(name,content) values('/$arr','%s')",$ser); $result=mysql_query($sql);
取数据的时候则采用相应的逆过程就可以了
对于implode对应的就是explode
对于serialize对应的就是unserialize
则可以恢复为原来数组的形式
--------------------- 作者:wiesin 来源:CSDN 原文:https://blog.csdn.net/wiesin/article/details/6038579?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!
[MySQL] 如何存储 array比较合适?把数组变成字符串:比如$a=array{"12","23","34","45"};$a="12,23,34,45"; 把这个存到数据库中就行了读取时再用explode变成数组数组大小不可定,有什么好的办法存储 以便将来查询? --------------------------------------------------------...
在很多的情况下,在编写
存储
过程中往往会用到数组,但是
mysql
中
存储
过程传入参数并没有可以直接传入数组的方法。在这种情况下我们只能退而求之或者说换个方式以字符串形式传入参数,然后在过程体中把字符串再转成数组?不过很遗憾告诉你,
mysql
并没有直接提供把字符串转数组的函数。现在你是不是有种想打人的感觉呢?不过,不用慌,此路不通,咱走另外的路,总有解决方法的。我们可以把传入的字符串截取成多个字符然后传入到临时表中,然后使用游标或者直接关联表过滤数据。这样就可以达到后面预期的效果了。
下面我们以一个例子来具体实践一下:
1、创建数据库,用于实例:
CREATE DATABASE huafeng_d
MySQL
数据库没有专门用于
存储
数组的数据类型。因此,如果你想在
MySQL
中
存储
数组,你可以使用以下几种方法之一:
将数组转换为字符串,然后使用字符串类型 (例如 VARCHAR)
存储
。例如,可以将数组 ['a', 'b', 'c'] 转换为字符串 'a,b,c',然后将字符串
存储
在字符串类型的列中。
使用序列化函数 (例如 serialize()) 将数组转换为字符串,然后使用字符串...
id | name | fruits
水果列可以包含空或像(‘apple’,’orange’,’banana’)或(‘strawberry’)等的字符串数组。第二个表是Table Fruit,有以下三列:
____________________________
fruit_name | color | price
文章目录数据类型
MySQL
中的数据类型整数类型可选属性MUNSIGNEDZEROFILL使用场景浮点类型精度说明精度误差定点数类型定点与浮点的区别位类型日期与时间类型TIMESTAMPTIMESTAMP与DATETIME的区别建议文本字符串类型CHAR与VARCHARTEXT类型ENUM类型SET类型二进制字符串类型BINARY与VARBINARYBLOBTEXT和BLOB得使用注意事项
在定义数据类型时,如果确定是整数,就用INT;如果是定点数类型DECIMAL;如果是日期与时间,就用DATE
推荐课程:
MySQL
教程。
在很多的情况下,在编写
存储
过程中往往会用到数组,但是
mysql
中
存储
过程传入参数并没有可以直接传入数组的方法。在这种情况下我们只能退而求之或者说换个方式以字符串形式传入参数,然后在过程体中把字符串再转成数组?
不过很遗憾告诉你,
mysql
并没有直接提供把字符串转数组的函数。现在你是不是有种想打人的感觉呢?不过,不用慌,此路不通,咱走另外的路,总有解决方法的。我们可
MySQL
数据类型选择原则
注意:一定能使用小的尽量使用小的,为什么呢?我们公司的数据库设计很乱大部分都是使用bigint和varchar多表查询(5-8个表)的时候慢的一批,而且还占用服务器资源,亲测!!!
更小的通常更好:一般情况下选择可以正确
存储
数据的最小数据类型。越小的数据类型通常更好,占用磁盘,内存和cpu缓存更小。
简单就好:简单的数据类型的操作通常