我有一个名为user的表有3列,即id,name和phone no。
我想要插入数据,如下面的剪辑。
+----+---------------+---------------------+-
| id | name | phone no |
+----+---------------+---------------------+-
| 1 | mahadev | +91 XXXXX |
| 2 | swamy | +91 YYYYY |
| | | +91 ZZZZZ |
| 3 | charlie | +91 AAAAA |
| | | |
+----+---------------+---------------------+-
这里的问题是如何在上面的剪辑中显示id = 2的同一行中添加多个值(逐个)。
有人可以帮我解决这个问题吗?
提前致谢。
答案 0 :(得分:1)
你不能做你想要的,你的意图。并且有一个原因。
一个可能的解决方案(糟糕),就是让id非唯一,然后插入两次id 2,名字swamy,手机两个不同的手机。
正确的解决方案是拥有两张桌子。一个是您当前的user
,其中只有id
和name
。
第二个表格为phone_numbers
,其中包含user_id
和phone_no
。该表上的主键是user_id
和phone_no
的组合,因此可以防止重复。然后在该表中,您可以根据需要插入任意数量的数字。
在您的示例中,您将有两行user_id=2
,每个电话号码一行。
然后将两个表连接在一起并显示结果只是一件事。
答案 1 :(得分:0)
一种可能的解决方案是创建该数据的数组,然后使用serialize()
函数存储它。
小例子:
$phones_array = array('phone_a' => '+91 YYYYY', 'phone_b' => '+91 ZZZZZ');
serialize($phones_array);
现在您的数据被序列化为一个字符串,尝试var_dump($phones_array)
您应该得到:
string 'a:2:{s:7:"phone_a";s:9:"+91 YYYYY";s:7:"phone_b";s:9:"+91 ZZZZZ";}' (length=66)
您现在可以将此值插入表格
您可以使用以下方法检索此数据:
unserialize($phones_array);
答案 2 :(得分:0)
SQL体系结构不允许这样的事情。您需要使用多行,或者您可以使用多个具有外键的表。或者你可以在将它放入mysql之前serialize(phone no)
。