从php发送json数据

时间:2013-03-07 21:03:59

标签: php json

我是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...

有人可以告诉我可能存在的错误

5 个答案:

答案 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);

以明文形式存储密码通常也是一个坏主意。考虑至少使用哈希函数。