2013-06-24 41 views
0

我有以下MySQL表:PHP選擇兩者之間串

表名:items

item_no qty 
1l1000bk 1 
1l1020be 2 
1l900bk 12 
1l820be 19 

創建form是提交到包含以下PHP代碼的其他頁面後:

$from = $_POST['from']; 
$to = $_POST['to']; 

$length = max(strlen($from), strlen($to)); 

$query6 = "SELECT * FROM items WHERE SUBSTRING(item_no, 1, ".$length.") BETWEEN '".$from."' AND '".$to."' ORDER BY item_no Desc"; 

$result6 = mysql_query($query6); 
if(!$result6){ 
    mysqli_error(); 
    exit(); 
} 



if(mysql_num_rows($result6)>0){ 
$num6 = mysql_num_rows($result6); 

for($i=0;$i<$num6;$i++){  

$row6 = mysql_fetch_assoc($result6); 
echo $row6['item_no']."</br>"; 
} 
} 

輸出完全錯誤,按照選擇的說明..我需要輸出搜索的item_no作爲降序!.. 這是什麼顯示:

1l900bk 
1l820be 
1l1020be 
1l1000bk 

1l1000怎麼小於1l900?它似乎只比較第三個字符?..如何確保它比較完整的字符串?

請幫忙!

+0

它比較整個字符串。要比較您想要的值,請參閱此主題:http://stackoverflow.com/questions/12097368/mysql-order-by-string-with-numbers –

回答

0
  SELECT column_name(s) 
     FROM table_name 
     WHERE column_name BETWEEN value1 AND value2; 
+0

它輸出相同的結果... – Alihamra

0

這是因爲它按字符串排序,而不是整數。 如果你想排序,你應該讓所有的數字都一樣:所以如果你有1000和900,使用0900,那麼它會排序好。