0

価格帯に応じて車を検索するコードがあります。

$category = "SELECT * FROM tbl_listings WHERE price between '$c[0]' AND '$c[1]'"; 

何らかの理由で、そのコードは完全には機能しません。適切な範囲の車が数台表示されましたが、5,000 から 20,000 の間で検索したときに 200,000 の車も表示されました。

また、データベースにドル記号が付いている車とカンマが付いている車がある場合、どのように検索すればよいでしょうか? 検索フォームは、ドル記号またはコンマを含むものを返しません。

4

2 に答える 2

1

価格を文字列として保存するのをやめますか? 価格は通常、次の 2 つのタイプのいずれかとして保存されます。

  • 整数: セント数
  • float: ドルとセントですが、小数点以下の桁数を 2 に設定してください

通常、価格を文字列 (「$14,999.99」など) としてデータベースに保存することはありません。これは、現在実行しようとしているような範囲クエリを実行できないためです。

また、特定の車のサブセットの価格を合計するクエリなどの算術演算も実行できません。

取り込んでいるデータにこのような書式設定された文字列が含まれている場合は、NumberFormatter::parseCurrency() を使用して、指定された文字列から float を取得してから、DB に押し込みます。 http://php.net/manual/en/numberformatter.parsecurrency.php

于 2012-05-13T21:55:13.260 に答える
0

についてのあなたの声明

一部の車にはデータベースにドル記号が付いた価格があり、一部の車にはカンマが付いています

データベースのデータ型は数値データ型ではないと思います。your$c[0]が正しく下限で$c[1]あり、上限であっても、これは問題になる可能性があります。

于 2012-05-13T21:56:03.687 に答える