Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL按结果排序,不按字母排序_Php_Mysql - Fatal编程技术网

Php MySQL按结果排序,不按字母排序

Php MySQL按结果排序,不按字母排序,php,mysql,Php,Mysql,我一直在试图找到解决这个问题的办法,但没有任何运气。我知道这里有几个类似的问题,但它们都是更复杂的场景,并不真正适用。好,问题是: 我有一个非常简单的表,其中列出了交易收款人及其相关类别。结构是id-int,name-varchar,和cat-varchar 我正在尝试执行一个简单的查询,以按字母顺序显示收款人姓名,并使用while循环将其添加到选择框中。无论我是否使用ASC或DESC,它们都不会以明显的顺序显示。条目的开头或结尾都没有空格 以下是查询-按名称从收款人订单中选择名称 在phpMy

我一直在试图找到解决这个问题的办法,但没有任何运气。我知道这里有几个类似的问题,但它们都是更复杂的场景,并不真正适用。好,问题是:

我有一个非常简单的表,其中列出了交易收款人及其相关类别。结构是
id-int
name-varchar
,和
cat-varchar

我正在尝试执行一个简单的查询,以按字母顺序显示收款人姓名,并使用
while
循环将其添加到选择框中。无论我是否使用ASC或DESC,它们都不会以明显的顺序显示。条目的开头或结尾都没有空格

以下是查询-
按名称从收款人订单中选择名称
在phpMyAdmin中尝试按字母顺序对它们进行排序时,我得到了相同的结果
id
是一个自动递增的int字段和主键

谢谢

更新

以下是示例输出-
按名称从收款人订单中选择名称ASC

  • 希茨
  • 沃尔格林
  • 阿比氏
  • 美元将军
  • 埃克森美孚
  • iTunes
  • 红盒子
  • 星巴克
  • 沃尔玛
排序规则是utf8\U unicode\U ci

已解决

感谢@JohnFlatness解决了这个难题。这实际上是代码中的一个缺陷——这个项目有一个移动版和常规版。移动版本的脚本中有一个bug,在
name
列条目的开头添加了一个空格。我为此抽查的条目很好,遗漏了有空白的条目


感谢您的帮助-通过评论解决,这是我的第一次lol

这些字段可能并不完全包含您认为它们包含的数据。尝试从收款人处转储
选择十六进制(名称)的输出,以准确显示每个字段中的内容。以下是输出内容,以供参考:

417262792773                    Arby's
446F6C6C61722047656E6572616C    Dollar General
4578786F6E                      Exxon
6954756E6573                    iTunes
52656420426F78                  Red Box
53686565747A                    Sheetz
537461726275636B73              Starbucks
57616C677265656E73              Walgreens
57616C6D617274                  Walmart
演示:


还要验证您的表排序规则以*_ci

结尾,输出数据的示例是什么样子的?您的查询看起来很好,因此请检查数据中的实际内容。表上的字符集/排序规则是什么?这也会影响排序,例如,在a-Zit不是查询之前,您正在对a-z条目进行区分大小写的排序-这是显示…名称从何而来?除非我遗漏了什么,否则您的表只有三列,
id
payee
cat
看起来除了Sheetz和Walgreen之外,您得到了正确的排序。也许你在这些名字的开头有一些垃圾?你能告诉我们收款人按姓名订购ASC的<代码>选择十六进制(名称)的输出吗?
SELECT name FROM payees ORDER BY trim(name)