размещение данных на php через curl. jsondata.php не выдает вывод json - PullRequest
0 голосов
/ 05 мая 2018
**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);
    ?>

Примечание: неопределенный индекс: myVar в C: \ xampp \ htdocs \ v \ practice \ curl \ c3 \ jsondata.php в строке 2 Предупреждение: mysqli_fetch_assoc () ожидает, что параметр 1 будет mysqli_result, логическое значение задано в C: \ xampp \ htdocs \ v \ practice \ curl \ c3 \ jsondata.php в строке 6 []

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Ваша основная проблема заключается в том, что ваш запрос cURL отправляет запрос GET вместо POST запроса. Вы должны установить параметр CURLOPT_POST, чтобы сделать запрос POST. После этого выражение $_POST["myVar"] даст вам желаемое значение.

Кроме того, вы должны использовать подготовленные операторы для запросов SQL, которые зависят от переменных. И вы должны проверять ошибки SQL, не думайте, что все работает постоянно.

0 голосов
/ 05 мая 2018

Вот пара вещей-

Передайте массив, который вы JSON кодируете для "myVar", так что

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

и в вашем запросе curl:

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

и добавьте эту опцию:

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

Передача переменной, в которой ваш скрипт jsondata.php может ее прочитать, должна помочь с вашей ошибкой mysql - трудно сказать, что еще может быть проблемой, пока вы успешно не передадите все части запроса в скрипт.

...