Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php脚本未从web主机服务器上的url拾取数据_Php_Json - Fatal编程技术网

php脚本未从web主机服务器上的url拾取数据

php脚本未从web主机服务器上的url拾取数据,php,json,Php,Json,我有一些PHP脚本,可以从其他网站获取json数据。它通过GET方法(email)检索URL变量,并根据该变量从用户数据库中获取结果,这些结果是唯一的电影代码。然后这些代码一个接一个地放在omdbi.com web api中,以获取json对象中的结果,并放在用于收集json对象的数组中,最后返回json 但当我从本地主机服务器执行此操作时,它会工作并以json形式返回结果 像 { "movieRecord":[ { "Title":"Froze

我有一些PHP脚本,可以从其他网站获取json数据。它通过GET方法(email)检索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服务器执行此操作时,它会将null返回给我

{

    "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);
    }
    ?>

1.熟悉
@
。如果缺少var,更新的将抑制错误:

 $get_user_email= isset($_GET['email'])?@$_GET['email']:false;
 if(!$get_user_email)
    die('not all get params are passed');
2.SQl注入。不要立即使用外部数据,尤其是在db查询中使用外部数据时。您应该始终从GET或POST safe获取$VAR。至少要这样做:

$query2 = 'SELECT `id` from `tbl_login` where email=.'mysql_real_escape_string($get_user_email); 
3.如果获得意外结果,请使用print\u r或var\u dump调试所有变量、结果和查询:

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);
echo'get_user_email:'。$get_user_email.
; 回显“查询1”; 打印(查询); 回波“针对每个循环数据”; 打印(数据); 回音“查询2”; 打印(查询);

这将帮助您准确地找到为什么会得到错误的结果,或者当脚本出现错误/意外时

您容易受到
json\u encode($arr)
的影响?您不会将编码的数组保存在任何地方,因此这是一个无意义/无用的调用。您还假设file_get_contents()调用实际上返回了json。在与外部资源打交道时,永远不要假设自己成功。总是假设失败,检查失败,把成功当作惊喜。谢谢你的指导。我是初学者,我会处理好的。。但是你能告诉我另一种选择吗?你也在使用
mysql.*
函数,这些函数已经被弃用了将近十年,甚至已经从最新版本的PHP中完全删除了。你几乎是在乞求被这个代码入侵。谢谢你告诉我。。我想补充一点,这段代码只是为android应用程序编写的,它会将结果返回给android。。我将看到php的最新方法