我有这个PHP代码来获取所有用户在所有月份存入的所有付款(付款金额,用户名,付款月份):
$result = $mysqli->query("SELECT p.id as id, p.amount as amount,
u.name as user_id, m.name as month_id
FROM payment p, user u, month m
WHERE p.user_id = u.id AND p.month_id = m.id;");
//Add all records to an array
$rows = array();
while($row = $result->fetch_array())
{
$rows[] = $row;
}
//Return result
$jTableResult = array();
$jTableResult['Result'] = "OK";
$jTableResult['Records'] = $rows;
print json_encode($jTableResult);
这是我得到的json:
[{
"Result": "OK",
"Records": [
{
"0": "1",
"id": "1",
"1": "250",
"amount": "250",
"2": "user 1",
"user_id": "user 1",
"3": "jan 15",
"month_id": "jan 15"
},
...]
现在,我认为这些"0", "1", "2", "3"
名称/值不应该存在,我必须在这里做错了。这是json_encode()
的做法吗?或者这是我查询数据库的方式?
感谢您的帮助!
答案 0 :(得分:1)
这里的问题是您正在调用fetch_array()。
fetch_array()将返回基于索引的值数组以及基于键的值。因此,如果您只想在数组中使用基于键(名称)的值,请使用以下代码。
尝试fetch_assoc()。
$rows = array();
while($row = $result->fetch_assoc())
{
$rows[] = $row;
}
或fetch_array(MYSQLI_ASSOC)
$rows = array();
while($row = $result->fetch_array(MYSQLI_ASSOC))
{
$rows[] = $row;
}