【问题标题】:Insert an array in MySQL database在 MySQL 数据库中插入一个数组
【发布时间】:2011-09-30 04:51:12
【问题描述】:

我想在我的 MySQL 数据库中插入一个格式为 a、b、c 的数组。

 `var_dump($pvt_contacts)`

结果

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

我试过了

`implode(',',$pvt_contacts)' 

但它像我预期的那样回显 Array 而不是 102,3 。请帮帮我

【问题讨论】:

  • 我明白你想要什么,但我必须告诉你这是一种非常糟糕的方法。你到底想达到什么目的? 必须有其他方法可以做到这一点。在 mySQL 中存储数组是非常错误的。
  • 你误会我的意思了 Oltarus 。实际上我有一个数组 $pvt_contacts 我想以 102,2,4 格式插入数据库
  • 此处重复主题:stackoverflow.com/questions/1978438/save-php-array-to-mysql>
  • 您的查询到底是什么?我很确定我知道问题出在哪里......
  • Save PHP array to MySQL?的可能重复

标签: php mysql arrays


【解决方案1】:

如果你只想要102,3,那么你就差了一个(你指向一个父数组,而不是元素):

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

【讨论】:

    【解决方案2】:

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

    将您的数组转换为以下格式:

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

    您可以使用explode 将其转换回数组。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        你应该使用 serialize(), unserialize() 或 json_encode() , json_decode()

        这将使您更轻松地编写和检索原始数据,而无需自己解析存储的数据。 这里有一些很好的链接可以帮助你:

        Preferred method to store PHP arrays (json_encode vs serialize)

        http://php.net/manual/en/function.json-encode.php

        http://php.net/manual/en/function.serialize.php

        【讨论】:

          【解决方案5】:

          你可以将implode你的数组转换成一个字符串,然后explode它返回。默认分隔符是,。如果你想运行 SELECT 查询,那么你可以使用 MySQL 特定的 FIND_IN_SET() 函数,但是整个场景不推荐,你应该使用上面其他人建议的规范化方式。

          【讨论】:

            【解决方案6】:

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

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

            你是怎么知道的?

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

            你应该怎么做?

            制作两张表:

            • entries,
            • entry_tags;

            所有与条目相关的信息都保存到entries。例如:titledescription。 所有标签都保存到entry_tags。在该表中有id(主键)、entry_id(与entries ID 有关系的ID)和仅包含名称的tag

            希望对你有帮助!

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-11-23
              • 2011-07-05
              相关资源
              最近更新 更多