我做错了什么?我试图从数据库中取出最新的行(基于日期)并将其转换为JSON。但是这个文件只给我[]。
$date=date("Y-m-d",strtotime($_GET['date']));
$myquery = "SELECT * FROM test WHERE week='$date'";
$query = mysql_query($myquery);
if ( ! $myquery ) {
echo mysql_error();
die;
}
$data = array();
for ($x = 0; $x < mysql_num_rows($query); $x++) {
$data[] = mysql_fetch_assoc($query);
}
echo json_encode($data);
mysql_close();
&GT;
我的数据如下:
#id | week | firstname | last name | score#
###1 |2015-03-06 | Bill | Jones | 25
###2 |2015-03-13 | Bill | Jones | 45
###3 |2015-03-06 | Dave | Smith | 32
###4 |2015-03-13 | Dave | Smith | 52
###5 |2015-03-06 | Mary | Chu | 28
###6 |2015-03-13 | Mary | Chu | 45
因此,对于2015年3月13日,我希望将Bill,Dave和Mary的数据转换为JSON。我不想要上周的数据,只需要最新的数据。
答案 0 :(得分:2)
我在你的代码中看到的错误是if(!$ myquery)的条件,它应该是if(!$ query)或你可以这样做:
$query = mysql_query($myquery) or die(mysql_error());
还尝试检查mysql_fetch_assoc($ query)是否返回任何内容或检查$ date是否有值。
对于你的循环,我只是想分享一下:
你也可以这样做:
for($data=array();$x=mysql_fetch_assoc($query);$data[]=$x);
= d
答案 1 :(得分:0)
不确定这正是你想要的。
我担心我显然不明白你想从db那里得到什么,这就是我按分数添加订单的原因:
<?php
$link = mysql_connect('localhost', 'root');
$db_selected = mysql_select_db('test', $link);
$date = mysql_escape_string('2015-03-13');
$myquery = "SELECT * FROM mostCurrentRow WHERE week='$date' ORDER BY score DESC";
$query = mysql_query($myquery);
if ( ! $myquery ) {
echo mysql_error();
die;
}
$data = array();
while ($row = mysql_fetch_assoc($query)) {
$data[] = $row;
}
echo '<pre>';
var_export($data);
echo json_encode($data);
mysql_close();
/*
will return:
array (
0 =>
array (
'id' => '4',
'week' => '2015-03-13',
'firstName' => 'Dave',
'lastName' => 'Smith',
'score' => '52',
),
1 =>
array (
'id' => '2',
'week' => '2015-03-13',
'firstName' => 'Bill',
'lastName' => 'Jones',
'score' => '45',
),
2 =>
array (
'id' => '6',
'week' => '2015-03-13',
'firstName' => 'Mary',
'lastName' => 'Chu',
'score' => '45',
),
)[{"id":"4","week":"2015-03-13","firstName":"Dave","lastName":"Smith","score":"52"},{"id":"2","week":"2015-03-13","firstName":"Bill","lastName":"Jones","score":"45"},{"id":"6","week":"2015-03-13","firstName":"Mary","lastName":"Chu","score":"45"}]
*/
答案 2 :(得分:-1)
更改您的查询
$myquery = "SELECT * FROM test WHERE week = STR_TO_DATE('$date', '%Y-%m-%d %H:%i:%s')";
答案 3 :(得分:-1)
您的查询在查询文本中包含$ date,而不是连接到它。看起来应该更像这样:
$myquery = "SELECT * FROM test WHERE week='".$date."' ORDER BY id";