2013-06-24 21 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,那么它会排序好。