php_PHP チュートリアルで数値をフォーマットするときは数値の範囲に注意してください

WBOY
リリース: 2016-07-21 15:39:28
オリジナル
905 人が閲覧しました

SQL ステートメントの構築は

コードをコピーします コードは次のとおりです:

$sql = 'SELECT *
FROM sdb_comments
WHERE Goods_id = '.intval($goods_id).'
AND for_comment_id IS NULL
AND object _type = ".$item."
ANDdisabled="false"

私はこれを行うことを好みます:

コードは次のとおりです。次のように: $sql = sprintf ('SELECT *
FROM sdb_comments
WHERE Goods_id = %.0f
AND for_comment_id IS NULL
AND object_type = "%s"
anddisabled="false"
AND display = "true "', (float)$goods_id, $ item);


このステートメントは非常に単純です。より複雑な場合、文字列の結合を使用すると悪夢になります。
2 番目の方法を使用する方が便利ですが、小さな問題があります。数値を書式設定するときは、その値の範囲に注意する必要があります。数値演算を使用して値を取得し、質問します。その場合、最終的に返される SQL は必要なものではありません。

今日はまとめてみました:

%d: 2^31~2^31-1(-2147483648~2147483647) (intを符号付き10進数に変換)

%b: Binary (int型をbinaryに変換)

%c: 文字 (int 型を文字に変換)

%u: 2^32-1(0 ~ 4294967295) (int を符号付き 10 進数に変換)

%f: -2^128 -2^128(-3.4E38) ~+3.4E38)(float を float に変換) ローカライゼーション

%F: -2^128-2^128(-3.4E38 ~+3.4E38)(float を float に変換) 非ローカライゼーション

%o (int を変換) 8 進数に)

%s: 文字列

%x: int を小文字の 16 進数に変換する

%X: int を大文字の 16 進数に変換する

データベース内の ID は非常に大きい可能性があるため、%d が使用される場合、範囲外になると正しい結果が得られない場合があります。したがって、個人的には、ID をフォーマットするときは、%d よりも %.0f を使用することをお勧めします。


http://www.bkjia.com/PHPjc/321541.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/321541.html技術記事構築された SQL ステートメントは次のとおりです: $sql = 'SELECT * FROM sdb_comments WHERE Goods_id = '.intval($goods_id).' AND for_comment_id IS NULL AND object_type = ".$ite...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート