0

好吧,所以基本上是有史以来最简单的查询......我已经做了一百万次......

 SELECT * 
 FROM   purchased_items
 WHERE  uid = '$uid'

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

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

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

$uid 是一个字符串,并且作为字符串传递。

这是我做过一百万次的事情,而且我从来没有让这个简单的查询不起作用。

任何想法为什么这不起作用?

4

3 回答 3

0

您可能会从 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);;
于 2012-09-02T02:14:49.687 回答
0

你表上的数据类型是什么uid?转换uid为另一种数据类型怎么样?

 SELECT * 
 FROM   purchased_items
 WHERE  CAST(uid AS VARCHAR(25)) = '$uid'
于 2012-09-02T03:35:13.843 回答
0

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

于 2012-09-02T17:45:50.900 回答