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.comtruehttp://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...