отправка данных в php через curl. jsondata.php не выводит json

**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 []


person ViShU    schedule 04.05.2018    source источник


Ответы (2)


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

Передайте массив, который вы json кодируете для «myVar», поэтому

$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 - трудно сказать, что еще может быть проблемой, пока вы успешно не передадите все части запроса скрипту.

person TCooper    schedule 04.05.2018

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

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

person Progman    schedule 05.05.2018