PHP 将 array/object 存入 SQL

array 和 object 是不可以直接插入到数据库中的,大致思路是将 array 和 object 编码为 JSON 字符串,然后使用的时候再进行 JSON 字符串解码,并且数据库的列得设置成能够足够存放这些字符串,例如 text 数据类型。

			
<?php
  $conn = mysqli_connect('localhost', 'root', 'password', 'db_name') or die("数据库连接失败" . mysqli_connect_error());
  $sql = "CREATE TABLE IF NOT EXISTS `tbl_name` (`arr` varchar(255) NULL DEFAULT NULL)";
  mysqli_query($conn, $sql) or die("数据表 tbl_name 创建失败" . mysqli_error($conn));

  $arr = [1, 2, 3, 4, 5];
  $str = json_encode($arr);

  $sql = "INSERT INTO `tbl_name` (`arr`) VALUES('{$str}')";
  mysqli_query($conn, $sql) or die("插入 json 字符串失败" . mysqli_error($conn));

  $sql = "SELECT * FROM tbl_name";
  $result = mysqli_query($conn, $sql) or die("获取记录失败" . mysqli_error($conn));
  $str_arr = mysqli_fetch_all($result, MYSQLI_ASSOC);
  $json_str = $str_arr[0]['arr'];
  $my_arr = json_decode($json_str);

  var_dump($my_arr); 

  mysqli_free_result($result);
  mysqli_close($conn);
 ?>
			
		

输出:

      
array (size=5)
  0 => int 1
  1 => int 2
  2 => int 3
  3 => int 4
  4 => int 5