Php 为什么我的两个不同的问题返回相同的结果?

Php 为什么我的两个不同的问题返回相同的结果?,php,mysqli,Php,Mysqli,我有两个查询,它们将返回数据库中相对于当前行的下一行和上一行 但是,它们都返回相同的内容,即下一行,出于某种原因,第二个查询还返回一个空数据集 代码: 但我们应该输出: id: R401.4 Soil tests. first q: R401.4.1 Geotechnical evaluation. second q: R401.3 Drainage. 根据这组数据: 为什么这不返回上一行?您能试试这个吗?你可以在这里测试 但不确定是否适用于上一小节。我怀疑在直接比较字符串

我有两个查询,它们将返回数据库中相对于当前行的下一行和上一行

但是,它们都返回相同的内容,即下一行,出于某种原因,第二个查询还返回一个空数据集

代码:

但我们应该输出:

id: R401.4 Soil tests.

    first q: R401.4.1 Geotechnical evaluation.

    second q: R401.3 Drainage.
根据这组数据:


为什么这不返回上一行?

您能试试这个吗?你可以在这里测试


但不确定是否适用于上一小节。

我怀疑在直接比较字符串时是否能得到有意义的结果。blah>someotherblah甚至意味着什么?我建议使用严格的整数ID。您将看到一个字符串类型是否比另一个字符串类型小,如果处理不当,会产生奇怪的结果。@Zarazthuztra-如果在比较之前将
子节
值清理为类似
401.1.1
的值或其他值,是否有效?我不能真正使用我的自动递增
id
字段,因为它不符合顺序。您使用的所有标识符都以R开头?是的,通过该字段应该是标准的。这是可行的,但我可能会遇到我尝试使用的
之间出现两位数的情况:
$query=“SELECT*FROM codes WHERE subsection=”$身份证件“'按ASC小节排序限制1,1
,但只要我添加
偏移量
,1它就会返回空白。我做了一个测试,它似乎在
@ian wow之间工作,真的吗?你要找的是
自然排序
。但人们说,对于自然排序,并没有绝对的解决方案。只在某些情况下有效。请参阅此处。所以,我准备提出一些类似树结构的建议(即父小节,子小节),无论如何,到目前为止都很好!
    ORDER BY LENGTH(SUBSTRING_INDEX(subsection, ' ', 1)),
        SUBSTRING_INDEX(subsection, ' ', 1) ASC;
id: R401.4 Soil tests.

    first q: R401.4.1 Geotechnical evaluation.

    second q: R401.3 Drainage.
SELECT * from ss where subsection > 'R401.4 Soil tests'
ORDER BY SUBSTRING_INDEX(subsection, ' ', 1) ASC;
+-------------------------+
| subsection              |
+-------------------------+
| R401.4.1 Geotech.       |
| R401.4.2 Compressible   |
| R402.1 Wood foundations |
+-------------------------+
3 rows in set (0.00 sec)

SELECT * from ss where subsection < 'R401.4 Soil tests'
ORDER BY SUBSTRING_INDEX(subsection, ' ', 1) DESC;
+---------------------+
| subsection          |
+---------------------+
| R401.3 Drainage     |
| R401.2 Requirements |
| R401.1 Application  |
+---------------------+
3 rows in set (0.01 sec)
    ORDER BY LENGTH(SUBSTRING_INDEX(subsection, ' ', 1)),
        SUBSTRING_INDEX(subsection, ' ', 1) ASC;