【问题标题】:How should I store array values in a MySQL database?我应该如何在 MySQL 数据库中存储数组值?
【发布时间】:2012-11-12 12:08:36
【问题描述】:

为了提供一些背景知识,我正在创建一个主要使用 jQuery 的 Web 应用程序。我从另一个域的页面中抓取了一些值; 3 个整数数组和一个字符串格式的日期。然后这些值会显示在我的页面上。这些数组中的每一个都有 7 个数字。

将每个数组作为一个条目存储在我的 MySQL 数据库中对我来说是有意义的。我最初的想法是将每个数组的值存储为 JSON 对象,然后通过阅读将其插入到我在数据库中的条目中,所以这似乎不是采用的方法。我不认为在未来的任何阶段都需要对值进行排序。我只需要每个整数的值,不需要知道每个数组中的每个整数是如何相互关联的。

有人可以为我指出有关这些值的存储和检索的正确方向吗?

【问题讨论】:

  • 正好相反,在关系数据库的列中存储像数组这样的复杂值没有任何意义

标签: php javascript jquery mysql arrays


【解决方案1】:

也许serialize()unserialize() 会帮助你。但我不会建议这是最好的方法。

【讨论】:

    【解决方案2】:

    通常数组有点难以处理。在大多数情况下,数组是我需要稍后在前端使用 javascript 为用户处理的值(无论如何也想不出其他用途)。因此,我通常做的是通过使用将它们存储为文本

    $array = array('one', 'two', 'three');
    $textToSaveinDB = implode(',', $array);
    

    当我检索到这个时,你会使用相反的方式

    $textFromDB = "one,two,three";
    $array = explode(textFromDB, ',')
    

    之后你可以对数组做任何你需要做的事情。例如使用 JSON_encode() 并通过 ajax 发送给用户。

    【讨论】:

    • 您建议将数组存储为哪种类型?如果每个数组包含 7 个数字,并且每个数字只能介于 1 和 100 之间,那么使用 CHAR(30) 是否有意义?我对数据类型不太熟悉。
    • 从技术上讲,您只需要 7*3 + 6 = 27 个字符,因此 CHAR(27) 就足够了。如果这不是用户输入,那么没有问题。在写入数组之前,您必须检查输入是否正确。
    • 目前我将值存储在 JavaScript 数组中。将这些分配给 PHP 变量以便将它们存储在 MySQL 数据库中的最佳方法是什么?还是有另一种更好的方法将我的 JS 数组直接插入数据库?
    • 通常你会通过 jquery 的 ajax 调用来做到这一点。
    • 当您的数组值包含逗号时,这将不起作用。最好使用 CSV 或 JSON 之类的东西将序列化的数组存储在您的数据库中。
    猜你喜欢
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 2011-03-08
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多