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;