我有一些PHP脚本,它从其他网站获取json数据。它通过GET方法(电子邮件)检索URL变量,并根据此变量从用户数据库获取唯一电影代码的结果。然后将这些代码逐个放在omdbi.com web api中,以获得json对象中的结果并放置在一个数组中,该数组用于收集json对象,然后在最后返回一个json
但是当我从我的本地主机服务器执行此操作时,它会工作并将结果作为json返回 喜欢..
{
"movieRecord":[
{
"Title":"Frozen",
"Year":"2013",
"Rated":"PG",
"Released":"27 Nov 2013",
"Runtime":"102 min",
"Genre":"Animation, Adventure, Comedy",
"Director":"Chris Buck, Jennifer Lee",
"Writer":"Jennifer Lee (screenplay)",
}
]
}
但是当我从webhost服务器执行此操作时,它会向我返回空值
{
"movieRecord":[
null,
null,
null
]
}
我该怎么办?
我的代码:
<?php
include "conn3.php";
$get_user_email=@$_GET['email'];
$query2 = "SELECT id from tbl_login where email='$get_user_email';";
$hasil2 = mysql_query($query2)or die(mysql_error());
while ($data2=mysql_fetch_array($hasil2)){
$id= $data2['id'];
}
$query = "SELECT movie from usermovieassoc where userr='$id';";
$hasil = mysql_query($query)or die(mysql_error());
if (mysql_num_rows($hasil) > 0) {
$response = array();
$response["movieRecord"] = array();
while ($data = mysql_fetch_array($hasil))
{
$h['movie'] = $data['movie'] ;
$get_id=$h['movie'];
$url = file_get_contents("http://www.omdbapi.com/?i=$get_id&plot=full&r=json");
$arr = json_decode($url,true);
json_encode($arr)
array_push($response["movieRecord"], $arr);
}
echo json_encode($response);
}
else {
echo json_encode($response);
}
?>
答案 0 :(得分:1)
1.乘坐 $get_user_email= isset($_GET['email'])?@$_GET['email']:false;
if(!$get_user_email)
die('not all get params are passed');
。如果缺少var,则更新会抑制错误:
$query2 = 'SELECT `id` from `tbl_login` where email=.'mysql_real_escape_string($get_user_email);
2.SQl注射。不要立即使用外部数据,尤其是在db查询中使用它。你应该总是从GET或POST安全地获得$ vars。至少这样做:
echo 'get_user_email:'.$get_user_email.'<br/>';
echo 'query 1 ';
print_r($query);
echo 'for each loop data';
print_r($data);
echo 'query 2 ';
print_r($query);
3.如果您收到意外结果,请使用print_r或var_dump调试所有变量,结果和查询:
{
"Name": "ABC",
"Phone":"123",
"Address":[{"City":"City-1"},{"Country":"Country-1"}]
}
{
"Name": "ABC-1",
"Phone":"123-1",
"Address":[{"City":"City-2"},{"Country":"Country-2"}]
}
这将帮助您找到错误结果或脚本出错/意外方式的确切原因