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