当从ajax请求调用时,php脚本可以更新我的sql吗?

当从ajax请求调用时,php脚本可以更新我的sql吗?,php,ajax,json,Php,Ajax,Json,我有一个脚本,可以向php脚本发出ajax请求 // ajax request for Weather $.ajax({ type: "POST", url: "Json/weatherAPI.php" , data: { postcode: postcode, display:'fadeout' , color:'blue' ,

我有一个脚本,可以向php脚本发出ajax请求

    // ajax request for Weather       
    $.ajax({
          type: "POST",
          url: "Json/weatherAPI.php" ,
          data: { 
          postcode: postcode,
          display:'fadeout' ,
          color:'blue' ,
          timed_display:'20'},
          dataType: 'json',   
          success:JsonDataReturned ,

    });
这将调用我的PHP脚本,然后查询天气API并将Json数据返回到上面的脚本,所有这些都可以正常工作(下面)

         $postcode = $_POST['postcode'];
         $url = "http://www.myweather2.com/developer/forecast.ashx?uac=" . $api . "&output=json&query=" . $postcode ; 
         $response = fopen($url, "r");
         $response = fgets($response, 4096);
         echo $response ;
在此之后,在同一个PHP脚本中,我想用“post”数据更新我的SQL DB,请参见下文(数据库已连接)

我相信一切看起来都不错,我知道我有“post”数据,但它不会更新我的数据库,但是如果我单独运行php脚本(没有ajax调用),它会更新。我的问题:当作为ajax请求调用时,我的PDO语句是正确的还是PHP脚本没有正确执行


有什么帮助吗?,

PHP不知道请求是否是AJAX,除非您设置了一个变量并自己检查它,所以请求应该可以工作。我怀疑PHP正在寻找“POST”变量,但您的ajax可能正在发送一个必须解码的JSON字符串。做一个print_r($_POST),看看“单独”运行还是通过ajax调用运行的区别。您可能需要解析传入的JSON(在请求体中)。不管是什么,打印出来的内容都会帮助你发现问题。

你能把这行移到echo$response;在最后一秒和第三秒中,您只需快速访问数据库即可。SQL注入呃?移动回显不会改变任何东西我检查了post数据,并且在语句中看起来都是正确的。如何单独运行php脚本?我在php脚本中生成了一些post数据$_post['top']=“9999”;等
      $query = 'UPDATE data_weather_control SET ';
      $values = array();

      foreach ( $_POST as $key => $value ) {

                  $query .= ' '.$key.' = :'.$key.',';   // the :$name part is the placeholder, e.g. :zip
                  $values[':'.$key] = $value;           // save the placeholder

      };

      $query = substr($query, 0, -1) ; // remove last , 
      $query .= " WHERE id='dataman' " ;

      $qry = $pdo->prepare($query);
      $qry->execute($values);            // bind placeholder array to the query and execute everything