Php 将json对象的一部分插入数据库只会插入一个括号

Php 将json对象的一部分插入数据库只会插入一个括号,php,json,database,Php,Json,Database,我正在尝试使用以下代码将json对象的一部分插入我的数据库: $filename = json_encode($_FILES['files']); // Insert file into database $insertfile = " INSERT INTO files1 (filename, name, path, cat_id) VALUES ('".$filename['name']."', '".$name."', '".$custom_dir."', '".$catid."')";

我正在尝试使用以下代码将json对象的一部分插入我的数据库:

$filename = json_encode($_FILES['files']);

// Insert file into database
$insertfile = "
INSERT INTO files1 (filename, name, path, cat_id)
VALUES ('".$filename['name']."', '".$name."', '".$custom_dir."', '".$catid."')";
$insertfilecon = $conn->query($insertfile);
仅出于目前的测试目的,我知道上面的代码是不安全的

由于某种奇怪的原因,我第一次尝试这个方法时,文件名被添加到了我的数据库中

它补充道:
199370898.pdf

现在每次上传都会添加
{

我不知道为什么,如果我将json添加到我的数据库中,如下所示:

{"name":["198970050.pdf"],"type":["application/pdf"],"tmp_name":["/tmp/phpffJUEt"],"error":[0],"size":[24295]}

为什么我只看到添加了一个括号?

$filename
json\u encode
之后的一个字符串,而不是一个数组。我很惊讶它能正常工作。我猜
name
默认为
0
,所以你最终会回显字符串的第一个字符。你应该会得到一个通知。@user3783243解码它时有同样的效果。作为假设您正在使用
mysqli\u
API!添加
ini\u集('display\u errors',1);ini\u集('log\u errors',1);错误报告(全部);mysqli\u报告(mysqli\u report\u error | mysqli\u report\u)
到脚本顶部。这将强制任何mysqli_uuuu错误生成一个异常,您可以在浏览器上看到,其他错误也可以在浏览器上看到。@twan它不是
json
所以您无法解码它。看看这是您当前的行为。我想您想要
$\u文件['FILES']['name']
@user3783243我以前试过,但这只会将数组添加到我的数据库中。我也试过
$\u文件['FILES'][0]['name']
,但这只会增加一点。