6

我对 Php 完全陌生,我正在尝试将 json 数据从 php 发送到 android。我在 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...

有人可以告诉我可能是什么错误

4

5 回答 5

11

试试这样

$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;

并且不推荐使用mysql,何时可以使用mysqli或PDO

于 2013-03-07T21:07:37.800 回答
8

除了 sam 和 pitchinnate 建议的更改之外,还可以考虑添加 php header 以将内容类型设置为 json

header('Content-type: application/json');

那就是如果你使用android远程请求json信息

于 2013-03-07T21:10:09.580 回答
1

您正在使用mysql_querywith mysqli_fetch_array。你需要使用mysql_fetch_array.

但是 mysql_* 函数不应再使用。

还有另一个错误:

array_push($json, $bus); // i believe $bus should be replaced with $details
于 2013-03-07T21:06:07.930 回答
0

我认为您应该检查变量 $result (var_dump()); 的内容 事实上,如果没有定义结果,你的程序就不会进入循环,也不会定义$json。

于 2013-03-07T21:09:56.967 回答
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);

此外,以纯文本形式存储密码通常不是一个好主意。至少考虑使用散列函数。

于 2013-03-07T21:11:06.420 回答