**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中给出布尔值 []
答案 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错误,不要认为一切都在运行。