如何 select 来自 MySQL 的无行时间戳

How to select a timestamp from MySQL without rows

最近,我一直在为我的服务器的捐助者或支持者开发一个福利系统,但是,我 运行 遇到了一个小问题,我无法完全 select我想要从 MySQL 返回整数

的数据
SELECT TIMESTAMPDIFF(MINUTE, CURRENT_TIMESTAMP(), `expiration`)  
FROM `unclaimed` WHERE `steamid`="STEAM_0:1:56987503" 

(Returns 为 525530)

但是,我真的不能 select 这个数据,因为它不在任何行中,结果只是 returns。

我还尝试了 PHP 代码的多种变体来获取结果而不是行,但是那些导致了错误,所以我尝试了这个最后的变体,它给了我一个空白页:

我希望完成的是一个简单的脚本来检查数字是否为负数,以及是否将 运行k 更改为 0

您的行可以返回:

$row = mysqli_fetch_assoc($result);

然后你就可以回显了。还将时间戳分配给查询中的别名,以便您可以轻松访问它。

编辑:将您的查询更改为:

SELECT TIMESTAMPDIFF(MINUTE, CURRENT_TIMESTAMP(), `expiration`)  steamTimestamp
FROM `unclaimed` WHERE `steamid`="STEAM_0:1:56987503"

然后您可以使用 $row['steamTimestamp'];

引用它

首先,确保 mysqli 扩展在创建连接之前给出有意义的错误。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

然后,如果涉及用户输入,您应该使用带有绑定参数的准备好的语句。

$stmt = $con->prepare('
    SELECT TIMESTAMPDIFF(MINUTE, CURRENT_TIMESTAMP(), `expiration`)
    FROM `unclaimed` WHERE `steamid` = ?');
$stmt->bind_param('s', $SteamID);
$stmt->execute();
$stmt->bind_result($diff);
while ($stmt->fetch()) {
    if ($diff <= 0) {
        // and so on
    }
}