MySQL SELECT WHERE返回空的长号,尽管它们在那里

时间:2012-09-02 01:40:04

标签: php mysql sql

好吧,所以基本上最简单的查询......我已经完成了一百万次......

 SELECT * 
 FROM   purchased_items
 WHERE  uid = '$uid'

如果$uid == 123它工作正常并返回uid为123的行中的所有数据

如果$uid == 351565051447743它返回空...

我很肯定351565051447743在某些行中可能是uid,我会将其复制并粘贴到表格中。

$ uid是一个字符串,并以字符串形式传递。

这是我已经完成了一百万次的事情,而且我从未让这个简单的查询无效。

为什么这不起作用?

3 个答案:

答案 0 :(得分:0)

您可能会将双倍的E {some_power}表示形式作为字符串。

我的意思是

$query1 = "SELECT * FROM   purchased_items WHERE  uid = '$uid'";

产地:

SELECT * FROM purchased_items WHERE uid = '3.5156505144774E+14'

解决这个问题的一种方法是:

$query = sprintf("SELECT * FROM purchased_items WHERE uid = '%d'", $uid);

不确定sql是否支持E格式,因此这可能是也可能不是问题。 http://viper-7.com/v6MhVe

dit:快速解决方法

$format = (is_numeric($uid)) ? '%d' : '%s';
$query2 = sprintf("SELECT * FROM purchased_items WHERE  uid = '{$format}'", $uid);;

答案 1 :(得分:0)

桌子上uid的数据类型是什么?如何将uid转换为另一种数据类型?

 SELECT * 
 FROM   purchased_items
 WHERE  CAST(uid AS VARCHAR(25)) = '$uid'

答案 2 :(得分:0)

好吧,如果您在使用浏览器进行测试时显然使用AMFPHP,那么在查询中将值“转换”为字符串并不重要。您需要在浏览器界面的字符串中使用引号传递它。