【问题标题】:PHP Insert an array as a string into mysql text field [duplicate]PHP将数组作为字符串插入mysql文本字段[重复]
【发布时间】:2014-08-27 08:55:15
【问题描述】:

我在这个变量中有一个数组:

$myArray;

然后我将它插入到我有一个文本字段的数据库中:

mysqli_query($con,"INSERT INTO myTable (thetextfield) VALUES ('$myArray')");

问题是我查看了表格内容,它只是说“数组”(不带引号)。

有没有办法按原样插入数组或用逗号分隔它们并插入它们?

【问题讨论】:

  • 通常是个坏主意....但是在插入时序列化()和在读取时取消序列化()
  • implode(',',$myArray)

标签: php mysql


【解决方案1】:

您可以使用implode 插入除数,例如:

$arrayString = implode(",", $myArray);

但是,如果包含, 的字符串在$myArray 中,则在转换回数组时可能会导致意外结果,因为您会突然多了一个数组项。 (要将其转换回来,您可以使用explode

您也可以使用json_encode 将数组编码为 JSON。

$arrayString = json_encode($myArray);

这样更安全。 (要解码回数组,请使用json_decode

当然你也可以序列化 PHP 数组:

$arrayString = serialize($myArray);

此选项的缺点是输出字符串只能由 PHP 读取,这与广泛支持的 JSON 不同。 (unerialize 可用于将字符串转回数组)

【讨论】:

    【解决方案2】:

    我建议您在保存数组之前使用serialize,并在从数据库检索后再次反序列化,

    "INSERT INTO myTable (thetextfield) VALUES ('".serialize($myArray)."')"
    

    如果你想保存它,用逗号分隔使用 implode 函数来实现,

    "INSERT INTO myTable (thetextfield) VALUES ('".implode (", ", $myArray)."')"
    

    【讨论】:

      【解决方案3】:

      使用implode

      $newString = implode(",", $myArray);
      "INSERT INTO myTable (thetextfield) VALUES ('$newString')"
      

      【讨论】:

        【解决方案4】:

        你不能直接向mysql插入一个数组,因为mysql不会识别它。

        您需要使用 php implode 转换数组,或者您可以使用 php 的 serialize 或 json_encode。这样您也可以更轻松地检索数组数据。

        【讨论】:

        • 您应该只投票赞成与您的想法相同的答案,而不是给出另一个答案。
        • 是的,实际上当我回答这个问题时,这个问题没有答案。
        猜你喜欢
        • 1970-01-01
        • 2015-06-27
        • 2010-10-19
        • 2019-12-15
        • 1970-01-01
        • 1970-01-01
        • 2014-03-06
        • 2016-08-08
        • 2017-06-08
        相关资源
        最近更新 更多