如何解决';试图获取非对象错误的属性'&';未定义变量:id';在php代码中?

如何解决';试图获取非对象错误的属性'&';未定义变量:id';在php代码中?,php,Php,我在下面的代码中得到了3行的“尝试获取非对象错误的属性”。如何解决这个问题?我的全部代码是: $con=mysqli_connect("localhost","root","","mydatabase"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $data = json_decode(file_get_contents("php://input"

我在下面的代码中得到了3行的“尝试获取非对象错误的属性”。如何解决这个问题?我的全部代码是:

$con=mysqli_connect("localhost","root","","mydatabase");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$data = json_decode(file_get_contents("php://input"));

$name = mysqli_real_escape_string($con, $data->name); //ERROR FOR THIS LINE
$address = mysqli_real_escape_string($con, $data->address); //ERROR FOR THIS LINE
$sql = "INSERT INTO friend_data(name,address) values ('$name','$address')"; //ERROR FOR THIS LINE

if (!mysqli_query($con, $sql)) {
die('Error: ' . mysqli_error($con));
}
echo "Record Added";
mysqli_close($con);
此外,我还收到以下代码的“Undefined variable:id”错误:

$con=mysqli_connect("localhost","root","","mydatabase");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$id = $_GET['id']; //ERROR FOR THIS LINE
$sql = "delete from friend_data where id= '$id'";

if (!mysqli_query($con, $sql)) {
die('Error: ' . mysqli_error($con));
}
echo "Record Removed";
mysqli_close($con);

你能给我看看你的JSON数据吗。第二种选择是试试这个

$id = $_GET['id'];
$con=mysqli_connect("localhost","root","","mydatabase");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "delete from friend_data where id= '$id'";

if (!mysqli_query($con, $sql)) {
die('Error: ' . mysqli_error($con));
}
echo "Record Removed";
mysqli_close($con);

在处理变量之前,需要检查变量是否存在。对于第二个问题,您不能保证在URL上传递了id,所以请执行以下操作:

if (isset($_GET['id])) {
   //do something
} else {
   //show an error
}
对于第一个问题,你不能保证什么来自“php://input“是JSON字符串还是JSON_解码工作正常。将代码分为不同的阶段,并在继续之前测试每个阶段是否工作,而不是将其全部连接到一行

if (($content = file_get_contents("php://input")) !== FALSE) {
   $data = json_decode($content);
   if (($data != null) && (is_object($data))) {
     //do your stuff
   } else {
     //error
   }
} else {
   `//error
}

那么,为什么您在没有任何json数据的情况下使用json_decode()?您的$_GET['id']中可能没有值,您检查过了吗?