好吧,所以基本上最简单的查询......我已经完成了一百万次......
SELECT *
FROM purchased_items
WHERE uid = '$uid'
如果$uid == 123
它工作正常并返回uid为123的行中的所有数据
如果$uid == 351565051447743
它返回空...
我很肯定351565051447743
在某些行中可能是uid
,我会将其复制并粘贴到表格中。
$ uid是一个字符串,并以字符串形式传递。
这是我已经完成了一百万次的事情,而且我从未让这个简单的查询无效。
为什么这不起作用?
答案 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,那么在查询中将值“转换”为字符串并不重要。您需要在浏览器界面的字符串中使用引号传递它。