使用php在单行中附加多个值

时间:2014-03-26 08:48:21

标签: php mysql

我有一个名为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的同一行中添加多个值(逐个)。

有人可以帮我解决这个问题吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

你不能做你想要的,你的意图。并且有一个原因。

一个可能的解决方案(糟糕),就是让id非唯一,然后插入两次id 2,名字swamy,手机两个不同的手机。

正确的解决方案是拥有两张桌子。一个是您当前的user,其中只有idname

第二个表格为phone_numbers,其中包含user_idphone_no。该表上的主键是user_idphone_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)