我遇到了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使用完全相同的代码,但不返回null。有什么想法吗?
修改
以下是$playerInfo
(当我使用geekygamer14
时)
array (size=3)
'id' => null
'name' => null
'server' => null
似乎无论verified
设置为1
(整数)的行,它都会NULL
。
答案 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
。