Mysqli语句返回错误

时间:2014-11-05 00:43:46

标签: php mysql mysqli

我正在尝试使用此mysqli语句从数据库中返回真实的数据

$resulttwo = mysqli_query($link, "
SELECT 
*
FROM
Events 
WHERE 
time >= '%$lasttime%'");

变量“lasttime”是一个非常高的值的浮点数。数据库中的数字都低于此数字。但是,当我使用此语句时,它将返回数据库中的所有行。我不明白为什么使用这种比较产生不正确的结果。有什么东西我不见了吗?

1 个答案:

答案 0 :(得分:1)

'%$lasttime%'是一个字符串,在数字比较中使用时等于零。如您所说,time可能是字符串列,但在使用>=时会成功转换为数字。如果$ lasttime等于12345且$ time等于54321,则比较为54321 >= '%12345%',等同于54321 >= 0,因为'%12345%'未转换为int。

测试:

select '%12345%' = 0, '12345' = 0

返回TRUE(因为这是一个非数字字符串,其值为0)和FALSE(因为该字符串可以转换为12,345,而不是等于0)。

我不知道你为什么要在这个查询中使用通配符。