好吧,基本上是有史以来最简单的查询。。。我已经做了一百万次了。。。
SELECT *
FROM purchased_items
WHERE uid = '$uid'
如果$uid == 123
,它工作正常,并返回uid为123的行中的所有数据
如果$uid == 351565051447743
返回空。。。
我确信351565051447743
在某些行中可能是uid
,我确实将其复制并粘贴到表中。
$uid是一个字符串,并且作为字符串传递。
这是我做了一百万次的事情,我从来没有让这个简单的查询不起作用。
有什么想法为什么不起作用吗?
您可能会从double中得到一个作为字符串的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);;
表中uid
的数据类型是什么?将uid
转换为另一个数据类型怎么样?
SELECT *
FROM purchased_items
WHERE CAST(uid AS VARCHAR(25)) = '$uid'
好吧,所以如果在使用浏览器进行测试时明显使用AMFPHP,那么在查询中将值"强制转换"为字符串也没关系。您需要在浏览器界面的字符串中用引号传递它。