【问题标题】:Post multidimensional array in Mysql在Mysql中发布多维数组
【发布时间】:2017-05-24 12:09:58
【问题描述】:

我想将一个多维数组发布到 Mysql 中。

我必须知道的代码。

if (isset($_POST['husers[]'])) {
    $query = $db->prepare("UPDATE `users` SET highlighted_users = ( ? ) WHERE user_id = '" . $userId . "'");
    $query->bindParam(1, $_POST['husers[]']);
    $query->execute();
}

我拥有的数据:

array (size=4)
  'text' => string 'bla' (length=3)
  'another text' => &string '' (length=0)
  'husers' => 
    array (size=5)
      0 => string '100486' (length=6)
      1 => string '13474' (length=5)
      2 => string '179339' (length=6)
      3 => string '184729' (length=6)
      4 => string '150593' (length=6)

【问题讨论】:

    标签: php sql multidimensional-array pdo prepared-statement


    【解决方案1】:

    serialize 函数将为您解决问题。

    if (isset($_POST['husers'])) {
        $query = $db->prepare("UPDATE `users` SET highlighted_users = ( ? ) WHERE user_id = '" . $userId . "'");
        $query->bindParam(1, serialize($_POST['husers']));
        $query->execute();
    }
    

    当你将它从数据库中拉出时,你需要使用函数unserialize 将它变成一个普通的数组。

    【讨论】:

      【解决方案2】:

      你可以使用php的json_encode函数。这样,您可以将数据存储为字符串。在从数据库中检索时,通过json_decodefunction yu 可以将其重新排列。

      if (isset($_POST['husers'])) {
          $query = $db->prepare("UPDATE `users` SET highlighted_users = ( ? ) WHERE 
          user_id = '" . $userId . "'");
          $query->bindParam(1, json_eoncode($_POST['husers']));
          $query->execute();
      }
      

      【讨论】:

        【解决方案3】:

        如果要将数据存储为简单的逗号分隔字符串:

        if(isset($_POST['husers'])){  // changed $_POST key reference
            $husers_csv=implode(',',$_POST['husers']);
            $stmt=$db->prepare("UPDATE `users` SET highlighted_users=? WHERE user_id=?");  // removed (), added another placeholder
            $stmt->bindParam(1,$husers_csv);
            $stmt->bindParam(2,$user_id);
            $status=$stmt->execute();
        }
        

        【讨论】:

          【解决方案4】:

          您可以json_encode此数据,然后将其存储为 json 字符串。当您将数据拉回简单的json_decode() 以获取您的数组。

          if (isset($_POST['husers'])) {
              $query = $db->prepare("UPDATE `users` SET highlighted_users = ( ? ) WHERE user_id = '" . $userId . "'");
              $query->bindParam(1, json_encode($_POST['husers']));
              $query->execute();
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-12-15
            • 2011-12-12
            • 1970-01-01
            • 2015-03-12
            • 2018-01-06
            • 2011-01-26
            • 2019-07-26
            • 2011-01-03
            相关资源
            最近更新 更多