MySQL为某些行返回空值

时间:2013-12-31 07:13:57

标签: php mysql

我遇到了MySQL和PHP的问题。我正在尝试创建从数据库获取值的东西,用JSON编码然后打印它。我有这个,但有一些东西是从数据库中的某一行保持显示。除了我设置的NULL值外,它始终返回id。这是我的代码,我做错了吗?

$srv = mysql_query("SELECT * FROM `players` WHERE `name` LIKE '%" . mysql_real_escape_string($_GET['q']) . "%'");
while ($record = mysql_fetch_array($srv)) {
    $playerInfo = array('id' => $playerarray['id'], 'name' => $playerarray['name'], 'server' => $playerarray['server']);
    echo(json_encode($playerInfo));
}

如果你想看看它,它就是托管here。有趣的是,this page使用完全相同的代码,但不返回n​​ull。有什么想法吗?

修改

以下是$playerInfo(当我使用geekygamer14时)

时的内容
array (size=3)
  'id' => null
  'name' => null
  'server' => null

似乎无论verified设置为1(整数)的行,它都会NULL

2 个答案:

答案 0 :(得分:1)

您在循环中使用变量$record,但这并未在生成的数组中显示。相反,您使用的是名为$playerarray的变量。我假设代码应该是:

while ($record = mysql_fetch_array($srv)) {
    $playerInfo = array('id' => $record['id'], 'name' => $record['name'], 'server' => $record['server']);
    echo(json_encode($playerInfo));
}

注意:考虑使用mysql函数的替代方法,例如mysqli。 Mysql函数是deprecated

答案 1 :(得分:0)

更改此

$srv = mysql_query("SELECT * FROM `players` WHERE `name` LIKE '%" . mysql_real_escape_string($_GET['q']) . "%'");
while ($record = mysql_fetch_array($srv)) {
    $playerInfo = array('id' => $playerarray['id'], 'name' => $playerarray['name'], 'server' => $playerarray['server']);
    echo(json_encode($playerInfo));
}

到这个

$srv = mysql_query("SELECT * FROM `players` WHERE `name` LIKE '%" . mysql_real_escape_string($_GET['q']) . "%'");
while ($record = mysql_fetch_array($srv)) {
    $playerInfo = array('id' => $record['id'], 'name' => $record['name'], 'server' => $record['server']);
    echo(json_encode($playerInfo));
}

您的变量名称$playerarray['id']错误,这是写$record['id']。由于循环,您的数据在$ record中,因此您应该使用$ record而不是$playerarray