我是Php的新手,我正在尝试将json数据从php发送到android.I在php中有以下代码从数据库中读取值:
<?php
$con=mysql_connect("localhost","root","");
if(! $con)
{
die('Connection Failed'.mysql_error());
}
mysql_select_db("registration",$con);
$name="Adam";//$_POST["name"];
$password="charles";//$_POST["password"];
$sql="SELECT * FROM users WHERE name='$name'and password='$password'";
$result=mysql_query($sql, $con);
while($row = mysqli_fetch_array($result))
{
$details= array(
'name' => $row['name'],
'password' => $row['password'],
);
array_push($json, $bus);
}
$jsonstring = json_encode($json);
echo $jsonstring;
mysql_close();
?>
我期待输出是这样的:
[{"name":"Adam","age":"25","surname":"charles"}]
如果我没有错误的JSON数据。 但这给了我错误:
mysqli_fetch_array() expects parameter 1 to be mysqli_result, resource given in...
以及
Undefined variable: json in...
有人可以告诉我可能存在的错误
答案 0 :(得分:10)
试试这个
$result=mysql_query($sql, $con);
$json = array();
while($row = mysql_fetch_array($result))
{
$json[]= array(
'name' => $row['name'],
'password' => $row['password']
);
}
$jsonstring = json_encode($json);
echo $jsonstring;
当你可以使用mysqli或PDO时,不推荐使用mysql
答案 1 :(得分:7)
除了sam和pitchinnate建议的更改外,还要考虑添加php标头以将内容类型设置为json
header('Content-type: application/json');
即如果您使用android远程请求json信息
答案 2 :(得分:1)
您正在mysql_query
使用mysqli_fetch_array
。您需要使用mysql_fetch_array
。
但是不应再使用mysql_ *函数了。
还有另一个错误:
array_push($json, $bus); // i believe $bus should be replaced with $details
答案 3 :(得分:0)
我认为你应该检查变量$ result(var_dump())的内容;实际上,如果未定义结果,则程序将不会进入循环,并且不会定义$ json。
答案 4 :(得分:0)
未定义的变量:json 是因为你正在尝试做array_push($ json,$ bus),但$ json不存在。
你应该先申报
$json = Array();
mysql错误很可能是因为你正在混合mysql和mysqli模块引起的。
仅使用mysqli。
$con=mysqli_connect("localhost","root","");
mysql_select_db("registration",$con);
...
$result=mysql_query($sql, $con);
以明文形式存储密码通常也是一个坏主意。考虑至少使用哈希函数。