<?php
$hostname='localhost';
$username='root';
$password='';
$database='jsondb';
$conn=mysqli_connect($hostname,$username,$password,$database) or die ('Connecting to Mysql failed');
$jsonCont = file_get_contents('https://graph.facebook.com/186622721684184?fields=posts{id,full_picture,created_time,from,message}&access_token=');
$content = json_decode($jsonCont, true);
for($x = 0; $x <= 24; $x++){
$id = $content['posts']['data'][$x]['id'];
$message = $content['posts']['data'][$x]['message'];
$name = $content['posts']['data'][$x]['from']['name'];
$full_picture = $content['posts']['data'][$x]['full_picture'];
$created_time = $content['posts']['data'][$x]['created_time'];
mysqli_query($conn,"insert into fbjsontable value('$id', '$message', '$name', '$full_picture', '$created_time')");
}
?>
这是我的完整代码。即时通讯使用fb图数据。当我将json数据从图形发布到数据库时,注意:未定义的索引:第21行的C:\ xampp \ htdocs \ event&amp; happening \ jsonCon.php中的full_picture将出现此消息,因为full_pictures不存在。如何忽略不存在的列?
答案 0 :(得分:1)
如果您使用php7.0 +,您可以避免三元运算符通知,如下所示:
$full_picture = $content['posts']['data'][$x]['full_picture'] ?? null;
$ full_picture现在将包含已发送的数据,或者在未收到数据时为null。
答案 1 :(得分:0)
首先确保您的db字段可以接受null或空值。之后你就可以这样:
isset($content['posts']['data'][$x]['full_picture'])?$fullpicture=$content['posts']['data'][$x]['full_picture']:$fullpicture='';
这行代码检查图像是否存在,如果图像存在,它会将它的值分配给变量$fullpicture
,否则会将变量留空。
错误来自于$fullpicture
变量未分配任何值的事实。正如我所说,但请确保您的db-field接受空字段。如果没有,你就无法控制你的桌子,那么就去做:
isset($content['posts']['data'][$x]['full_picture'])?$fullpicture=$content['posts']['data'][$x]['full_picture']:$fullpicture='Image not found';