通过curl将数据发布到php。 jsondata.php没有给出json输出

时间:2018-05-04 21:34:01

标签: php php-curl

**jsondata.php  not giving json-formatted o/p. **
    **index.php**
    <?php 
        $curl=curl_init();
        $var=3;
        curl_setopt($curl,CURLOPT_URL,"http://localhost/v/practice/curl/c3/jsondata.php");

        curl_setopt($curl,CURLOPT_POSTFIELDS,"myVar=".$var);
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
        $response=curl_exec($curl);
        $data=json_decode($response);
        //print_r($data);
        for ($a=0; $a < count($data); $a++) { 
            echo $data[$a]->id." ";
            echo $data[$a]->username." ";
            echo $data[$a]->password." ";
            echo "<br/>";
        }
    ?>
    ----------------------
    **jsondata.php** 
    <?php 
        $myVar=$_POST["myVar"];
        $con=mysqli_connect("localhost","root","","practicedb");
        $result=mysqli_query($con,"select * from ex1 where id=".$myVar);
        $data=array();
        while ($row=mysqli_fetch_assoc($result)) {
            $data[]=$row;
        }
        echo json_encode($data);
    ?>
  

注意:未定义的索引:第2行的C:\ xampp \ htdocs \ v \ practice \ curl \ c3 \ jsondata.php中的myVar       警告:mysqli_fetch_assoc()期望参数1为mysqli_result,第6行的C:\ xampp \ htdocs \ v \ practice \ curl \ c3 \ jsondata.php中给出布尔值       []

2 个答案:

答案 0 :(得分:0)

这里有几件事 -

传递你json编码的数组&#34; myVar&#34;所以

$data = array('myVar' => $myVar);

并在您的卷曲请求中:

curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));

并添加此选项:

curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));

传递jsondata.php脚本可以读取它的变量应该有助于解决你的mysql错误 - 在你成功将查询的所有部分都传递给脚本之前,很难说其他什么可能是个问题。

答案 1 :(得分:0)

您的主要问题是您的cURL请求正在发送GET请求而不是POST请求。您必须设置CURLOPT_POST设置才能使其成为POST请求。之后,表达式$_POST["myVar"]将为您提供所需的值。

此外,您应该为依赖于变量的SQL查询使用预准备语句。你应该检查SQL错误,不要认为一切都在运行。