我有一个包含5列的表格:
user_id,5k,10k,halfmarathon和marathon。
我希望在每个运行距离的用户页面上显示用户的最佳时间。用户将能够更新创建新行的任何时间,其余列将设置为null。例如,
第1行是:
user_id:5,5k:null,10k:45:00,half:null,marathon:null。
然后用户再运行10k并获得更好的时间,并且想要更新他们的5k时间:
第2行是:
user_id:5,5k:15:53,10k:40:40,half:null,marathon:null。
当我运行以下SQL查询时
$query = "SELECT MIN(5k), MIN(10k), MIN(halfmartahon), MIN(marathon)
FROM Times
WHERE user_id = ".$userID."
GROUP BY user_id";
$db->query($query);
//Assign Result Set
$user_benchmarks = $db->single();`
当我vardump()
(我以秒为单位存储时间)时,我得到一个正确的数组:
object(stdClass)#18(4){[" MIN(5k)"] => string(3)" 953" [" MIN(10K)"] => string(4)" 2440" [" MIN(半程马拉松)"] => string(1)" 0" [" MIN(马拉松)"] => string(1)" 0" }
然而,当我尝试回应这一点时,$user_benchmarks->5k
它没有显示任何内容,当我运行print_r($user_benchmarks->5k)
时,它会以NULL
的形式返回。
有没有人遇到过这个/知道发生了什么?我还尝试将字符串转换为整数,然后将其打印无效 - 仍然得到NULL
。
答案 0 :(得分:0)
var_dump已经准确地显示了要使用的密钥:
object(stdClass)#18 (4) { ["MIN(5k)"]=> string(3) "953"
^^^^^^^
那你为什么要用
$user_benchmarks->5k
^^^
答案 1 :(得分:0)
这是因为" 5k" $ user_benchmarks对象的属性不存在。你需要访问" MIN(5k)"财产而不是。例如:
echo $user_benchmarks->{"MIN(5k)"};
另一方面,您可以将查询更改为以下内容:
SELECT MIN(5k) AS `5k`, MIN(10k) AS `10k` ...
然后您就可以访问属性" 5k"和" 10k"就像你想要的那样。
答案 2 :(得分:-1)
使用
SELECT MIN(5k) as 5k,
MIN(10k) as 10k,
MIN(halfmartahon) as halfmartahon,
MIN(marathon) as marathon