来自我的Php JSON的额外输出

来自我的Php JSON的额外输出,php,json,Php,Json,我学习Php/SQL/JSON已经有24个多小时了,学习效果非常好。我已经做了一个数据库,现在有php页面向数据库添加数据 我创建了一个php页面来返回一个JSON对象。它确实这样做了,但它似乎也会返回一些文本 [{"id":"5","udid":"4564645","name":"LastName","score":"999999.00","date":"2011-04-14 18:10:33"},{"id":"4","udid":"912345678901234567890123456759

我学习Php/SQL/JSON已经有24个多小时了,学习效果非常好。我已经做了一个数据库,现在有php页面向数据库添加数据

我创建了一个php页面来返回一个JSON对象。它确实这样做了,但它似乎也会返回一些文本

[{"id":"5","udid":"4564645","name":"LastName","score":"999999.00","date":"2011-04-14 18:10:33"},{"id":"4","udid":"9123456789012345678901234567590123456789","name":"sdfdsf","score":"111110.13","date":"2011-04-14 18:10:01"},{"id":"3","udid":"0123456789012345678901234567890123456789","name":"derktreb","score":"710.13","date":"2011-04-14 18:09:12"},{"id":"1","udid":"0123456789012345678901234567890123456789","name":"brandontreb","score":"210.13","date":"2011-04-14 11:40:05"},{"id":"2","udid":"0123456789012345678901234567890123456789","name":"brandontreb","score":"210.13","date":"2011-04-14 18:08:35"}]
Name    Score
[编辑]“名称”“分数”不再出现。是调用此php文件的旧版本导致它出现。下面的代码似乎工作正常。有什么问题吗

如果你看到我犯的任何错误,请向我指出

PHP代码:

<?php
// get_scores.php
/** MySQL database name */
define('DB_NAME', 'b_Chat');
/** MySQL database username */
define('DB_USER', 'b_App');
/** MySQL database password */
define('DB_PASSWORD', 'testtesttest');
/** MySQL hostname */
define('DB_HOST', $_ENV{DATABASE_SERVER});

$table = "highscores";

// Initialization
$conn = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
mysql_select_db(DB_NAME, $conn);

// Error checking
if(!$conn) {
    die('Could not connect ' . mysql_error());
}

$type   = isset($_GET['type']) ? $_GET['type'] : "global";
$offset = isset($_GET['offset']) ? $_GET['offset'] : "0";
$count  = isset($_GET['count']) ? $_GET['count'] : "10";
$sort   = isset($_GET['sort']) ? $_GET['sort'] : "score DESC";

// Localize the GET variables
$udid  = isset($_GET['udid']) ? $_GET['udid'] : "";
$name  = isset($_GET['name']) ? $_GET['name']  : "";

// Protect against sql injections
$type   = mysql_real_escape_string($type);
$offset = mysql_real_escape_string($offset);
$count  = mysql_real_escape_string($count);
$sort   = mysql_real_escape_string($sort);
$udid   = mysql_real_escape_string($udid);
$name   = mysql_real_escape_string($name);

// Build the sql query
$sql = "SELECT * FROM $table WHERE ";

switch($type) {
    case "global":
        $sql .= "1 ";
        break;
    case "device":
        $sql .= "udid = '$udid' ";
        break;
    case "name":
        $sql .= "name = '$name' ";
        break;
}

$sql .= "ORDER BY $sort ";
$sql .= "LIMIT $offset,$count ";

$result = mysql_query($sql,$conn);

if(!$result) {
    die("Error retrieving scores " . mysql_error());
}
//echo $result;
$rows = array();
while($row = mysql_fetch_assoc($result)) {
    $rows[] = $row;
}

echo json_encode($rows);
mysql_free_result($result);
mysql_close($conn);
?>

这段代码之后似乎有其他内容正在执行

尝试添加exit();在mysql_close()之后,看看会发生什么。如果您得到了预期的结果,那么您的请求肯定也在执行其他代码

一次优化

而不是这个

// Protect against sql injections
$type   = mysql_real_escape_string($type);
$offset = mysql_real_escape_string($offset);
$count  = mysql_real_escape_string($count);
$sort   = mysql_real_escape_string($sort);
$udid   = mysql_real_escape_string($udid);
$name   = mysql_real_escape_string($name);

try shorthand ( first handle mysql injection with `$_GET`)

$get_data = array_map('mysql_real_escape_string',$_GET);
注意:
$\u GET
不应是多维数组

还要更改顺序

mysql_free_result($result);
mysql_close($conn);
echo json_encode($rows);

奇怪的这些单词在JSON编码的结果之外。这些必须来自其他地方。这是完整的密码吗?你百分之百肯定吗?这在include-somewehre中没有使用?如果不回显json会发生什么。这些工件还保留着吗?@diEcho JSON outputServer下面的字符串“Name Score”不允许我用我上传的新文件覆盖旧的php文件,因此输出来自以前的文件。我一删除它并上传上面显示的代码,它就正常工作了。Php代码中的其他内容看起来还好吗?有什么应该做的更好的吗?请参阅上面的命令ToonMariner,谢谢-代码