0

さて、基本的にこれまでで最も単純なクエリです...私はこれを100万回実行しました...

 SELECT * 
 FROM   purchased_items
 WHERE  uid = '$uid'

$uid == 123正常に動作し、uid が 123 の行のすべてのデータを返す場合

$uid == 351565051447743空を返す場合...

351565051447743いくつかの行で可能性uidがあると確信しています。文字通りコピーしてテーブルに貼り付けました。

$uid は文字列であり、文字列として渡されます。

これは私が何百万回も行ったことであり、この単純なクエリが機能しないことは一度もありません。

これが機能しない理由はありますか?

4

3 に答える 3

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 に答える
0

double から文字列として E{some_power} 表現を取得している可能性があります。

つまり、

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

プロデュース:

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

それを修正する1つの方法は次のとおりです。

$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 に答える