使用varchar(64)的简单MySQL顺序无法正常工作

时间:2015-07-07 16:27:12

标签: php mysql sorting

我有一个名为'value'的varchar(64)列的表格。我想选择按此列排序的表格中的所有字段。

看起来很简单,但我的PHP代码和phpMyAdmin都显示错误的顺序。我已经尝试更改表和列的排序规则,但没有任何变化。我已经尝试重命名列名,但没有任何改变。 MySQL在基本级别上行为不端,或者我错过了什么。

http://imgur.com/YIzgKCa

以下是SHOW CREATE TABLE Content_Data_String

的结果
CREATE TABLE `Content_Data_String` (
 `id` mediumint(9) NOT NULL AUTO_INCREMENT,
 `content_instance_id` mediumint(9) NOT NULL,
 `field_id` mediumint(9) NOT NULL,
 `value` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
 PRIMARY KEY (`id`),
 KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

编辑:我的MySQL安装肯定有些可疑。这里不存在这个问题:http://demo.phpmyadmin.net/master-config/#PMAURL-22:sql.php?db=Robin&table=Content_Data_String&server=2&target=&token=a29d3337e04a2be19aa92e83355b0519

3 个答案:

答案 0 :(得分:1)

对不起伙计们。我的问题是我的PHP表单在字段值前插入空格。 @Uueerdo实际上就在这里。即使在检查了他的答案之后,我也无法通过phpMyAdmin看到这些额外的空间。重构表时,我使用phpMyAdmin而不是我的php表单来创建值。因此,这种误报激发了我原来的答案。

编辑:是的,模板文件中有一个额外的空格。真是浪费时间。对不起,伙计们。

答案 1 :(得分:0)

您正在使用表格名称"顺序为"。请改用字段名称。示例:"按值从Content_Data_String中选择*;"

答案 2 :(得分:-1)

我认为问题是由名为' value'的列引起的。这是一个保留字,即使我在查询中正确地删除了它的名字,但排序是不正确的。这可能是MySql版本(5.6.23)中的错误。

使用名称' data_value'重新创建表格时我看到问题消失了。

感谢所有人的帮助和建议。