php 输出mysql 数据类型_php – mysql中数组的数据类型

你可以:

1)如果值很少并且已修复,则使用SET数据类型

您将CREATE TABLE语句中的列定义为SET(‘USA’,’France’,’Germany’,…)NOT NULL(非null可选),并使用如下查询:

INSERT INTO myTable SET countries="USA,Germany";

2)使用带有外部引用的查找表

所以你定义一个国家表:

id_country|name

----------+-----------

1 |USA

2 |Germany

3 |France

并定义一个数据透视表,将您的主要对象(例如“用户”)链接到国家/地区,从而实现多对多关系.

F.ex.,users_countries表将以这种方式将users表链接到countries表:

id_user|id_country

------------------

1 |1

1 |2

2 |1

在此示例中,用户1链接到ID为1和2(美国和德国)的国家/地区,用户2仅链接到美国,依此类推

3)使用逗号分隔的字符串或其他分隔符,或序列化数组

这涉及使用服务器端语言(在您的情况下为PHP)将值与某些分隔符(例如逗号或管道|)连接起来:

$countries = array("USA", "Russia", "Iran");

$countriesString = implode (",", $countries); // $countriesString = "Usa,Russia,Iran"

$query = "INSERT INTO mytable SET countries = '" . $countriesString . "'";

(Note: the string value is not escaped for example purpose, but it is not a good practice)

从db中检索值时,将检索放入的字符串,并再次获取带有$array = explode(“,”,$retrievalValueFromDb)的数组,从而提供相同的分隔符.

更新:

4)检索值find_in_set()MySQL函数

您还可以依赖find_in_set(needle,field)函数,如果字符串存在于逗号分隔值字段中,则该函数返回大于零的整数.

因此,如果您使用方法1)并且具有类似“USA,Germany”的字符串字段,则可以使用以下方法获取USA所在的列:

SELECT * FROM myTable WHERE find_in_set('USA', countries) <> 0

方法1)如果你有很少的固定值,也很容易查询.缺点是您必须限制为64个值,必须修复这些值,并且不能包含逗号(,)作为分隔符.

方法2)是最标准化和正确的,它也是规范化和查询效率的

方法3)很简单,但需要额外的处理,对SQL来说并不那么容易

如其他地方所述,dbms中没有“数组”数据类型,您必须使用一些解决方法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值