2011-07-07 136 views
1

我想以格式a,b,c将数组插入到我的MySQL数据库中。在MySQL数据库中插入数组

`var_dump($pvt_contacts)` 

导致

array(1) { [0]=> array(2) { [0]=> string(3) "102" [1]=> string(1) "3" } } 

我试图

`implode(',',$pvt_contacts)' 

但回声阵列不是102,3如我所料。请帮我

+3

我明白你想要什么,但我必须告诉你这是一个非常可怕的方式来做到这一点。你想要达到什么目的?有**必须是另一种方式来做到这一点。在mySQL中存储数组是错误的。 – SteeveDroz

+0

你让我错了Oltarus。其实我有一个数组$ pvt_contacts,我想以格式102,2,4 –

+0

插入数据库什么是你的查询?我很确定我知道问题出在哪里... – misterjinx

回答

1

如果你只是想102,3,那么你关闭一(你指向一个父阵列,而不是元素):

implode(',',$pvt_contacts[0]); 
  • 如果你想存储的阵列一个DB,我推荐serialize。 (尽管在Drupal,ExpressionEngine,Wordpress等流行,这通常不是最好的主意)。
  • 如果您尝试将数组发送给js,我建议使用json_encode
  • 如果您正在做其他事情,我需要更多信息。
0

建议使用多行来存储数据,而不是将整个数组存储在其中。如果你坚持,这里是这样的:

转换您的阵列以下格式:

[key1]{value1}#[key2]{value2}#.... etc 

您可以使用explode将其转换回阵列。

0

最简单的方法应该是serialize()var_export()。但是,如果您不打算以任何方式使用数据库内的数据,则只应使用这些数据。如果你想运行例如对这个数组数据的SELECT查询应该以规范化的方式进行存储。

0

您可以implode您的数组转换成字符串,然后explode回来。默认分隔符是,。如果你想运行SELECT查询,那么你可以使用MySQL特有的FIND_IN_SET()函数,但是这整个场景是没有推荐,你应该使用规范化的方式,如上面提出的其他方法。

0

一种方法是将数组转换为JSON。它会将数组转换为字符串,您将能够存储它。

无论如何,我不认为这是正确的方式如何处理这个问题。比方说,例如,您需要将博客条目和标签存储到数据库中。

你如何知道?

将博客条目和标签保存到一个表中,一行。您将所有条目标签转换并保存到数据库中。

你应该怎么做?

让两个表:

  • entries
  • entry_tags;

与条目相关的所有信息保存到entries。例如:title,description。 所有标签保存到entry_tags。在该表中有id(主键),entry_id(与entries ID有关系的ID)和tag,它们只是保存名称。

我希望这会帮助你!