2012-07-11 88 views
1

我正在開發一個網站,人們可以購買和銷售新車或二手車。我想設置一個簡單的過濾器,使用php和sql語句,當然也可以使用html選擇框(下拉選項)。我已經得到了所有其他的選擇,以幫助和信任我已經非常感謝。然而,我一直在試圖讓「價格過濾器」工作,並沒有得到任何地方。下面是我在html中的選擇框。使用php過濾SQL查詢和html選擇框

<select name="price" size="0"> 
<option value="100000">Under $100,000</option> 
<option value="<?php echo " BETWEEN '100000' AND '250000' "?>">Between $100,000 and $250,000</option> 
<option value=">250000<500000">Between $250,000 and $500,000</option> 
<option value=">500000<750000">Between $500, 000 and $750,000</option> 
<option value=">7500000">Over $750,000</option> 
</select> 

這是價格變量我的$ _ POST聲明:

$price = mysql_real_escape_string($_POST['price']); 

這是我的SQL語句:

$sql = sprintf("SELECT * FROM `chjadb_vehicles` WHERE `v_make` LIKE '$make'AND `v_year` = '$year'AND `v_trans` LIKE '$trans'AND `condition` LIKE '$cond' AND `b_style` LIKE '$b_style' AND `v_price` '$price'"); 

在這之後,我有一個基本的循環,應打印結果。現在根據我的理解(正確與否),當用戶從下拉菜單中選擇一個特定的選項時,「選項值」的值被傳遞給$ _POST語句。在此之後,它應該用實際文本BETWEEN'100000'和'250000'替換$ price,完成查詢語句。所以從SQL語句印刷最終的說法應該是:

"SELECT * FROM `chjadb_vehicles` WHERE `v_make` LIKE '$make'AND `v_year` = '$year'AND `v_trans` LIKE '$trans'AND `condition` LIKE '$cond' AND `b_style` LIKE '$b_style' AND `v_price` BETWEEN '100000' AND '250000'"` 

但是我得到這個錯誤:

之間的\「100000 \」和\「250000 \」您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊,在第8行''BETWEEN \'100000'和'250000'''附近使用正確的語法。

有關我哪裏出錯的任何想法?由於

問候, D.拉多克

+0

爲什麼不簡單使用'WHERE v_price> = 100000 AND v_price <= 250000'? – lafor 2012-07-11 20:47:29

+0

什麼是「選擇boes」? – 2012-07-11 20:47:44

+0

這應該是「選擇框」...對於錯誤修正造成的抱歉...當我使用你選擇的語句我得到以下的PHP錯誤:你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第8行'> = 100000 AND'v_price' <= 250000''處使用正確的語法 – 2012-07-11 21:36:42

回答

0

我很新,不過我不認爲你需要周圍的號碼報價在BETWEEN聲明。我想你可以把它們拿出來。如果我錯了,我相信我會糾正的,但那是我的想法。

+0

引用不應該存在,但我會自動生成PHP代碼PHPMYADMIN和他們包括報價,所以我把他們留在 – 2012-07-11 21:05:49

0

「在最後的錯字?如果不是,那可能是問題所在。

+0

是啊不知道那是怎麼到那裏 – 2012-07-11 20:58:04

1

行後:

$sql = sprintf("SELECT * FROM `chjadb_vehicles` WHERE `v_make` L.... 

地說:

echo "<br><br>".$sql."<br><br>"; 

是暫時的,並使用頁面時看在瀏覽器中最終的SQL查詢。找到錯誤的位置,然後刪除「echo」聲明。