在从数据库中加载内容时,我遇到了问题。在我的数据库中,我有一个表,它保存着我的图片库图像。在我的行中,标题被设置为文本,因为我想使用的值是: hashtag,然后是像这个#1 #2这样的数字.诸若此类。
所以我就这样加载我的内容..。
$sql = "SELECT * FROM gallery ORDER BY title DESC LIMIT $start_from, $per_page";
$run = mysqli_query($conn,$sql);
while ($rows = mysqli_fetch_assoc($run))
{
echo'....... ';}
但问题是,当我按标题订购时,我得到的是这些数字
哈斯塔格90
哈斯塔格9-2
哈斯塔格9-1
所以,我使用的是按标题排序的DESC,为什么我的最大数字(hashtag 706)不是第一个呢?
我试着使用natsort();
,但它没有工作,因为它保持相同的东西。
我怎么解决这个问题?
发布于 2016-09-01 14:39:33
9-2
不是一个数字。它是一个字符串,因此这意味着您的title
字段是文本类型(char,varchar),并且适用字符串排序规则。这意味着字符串是“逐字符”比较的,而不是“逐个数字”。
9-2
7
abc
comparison a) "9" > "7" -> true
comparison b) "-" > "" -> true
comparison c) "2" > "" -> true
同样:
9-2
706
abc
comparison a) "9" > "7" -> true (ascii 57 > ascii 55)
comparison b) "-" > "0" -> false (ascii 45 > ascii 48)
comparison c) not necessary, 9-2 is already "bigger" than 706
因此,9-2
是一个比706
更大的字符串,因为9>7总是正确的。
https://stackoverflow.com/questions/39274323
复制相似问题