MYSQL PHP order by 和 limit 1 返回 null

MYSQL PHP with order by and limit 1 returning null

我正在尝试 select 第一行,其中可以有任意数量的行,这些行具有对它们进行分组的公共唯一 ID(不一定在数据库中按顺序排列)。

我在主列上使用 ORDER BY,它是一个完全唯一的 ID,是一个 int(11) 并使用 LIMIT 1。

$orderins = $db->Execute("select *
                    from " . TABLE_ORDERS_STATUS_HISTORY . "
                    where orders_id = '.$zv_orders_id.' order by orders_status_history_id ASC LIMIT 1");


$orderins = $orderins->fields['comments']; // SEND VAR

orders_status_history_id 是主要(完全唯一的 ID),也是第一列,使用自动递增。

orders_id 是分组行将共享的共享 id。共享此id的行不一定是一个接一个。

我得到的结果是空的。

我删除 ORDER BY 的那一刻,它发送了一个结果。

让我也包括在内,当我删除 ORDER BY 时,到目前为止它只是 return 对第一行进行了多次测试。

返回数据库中存在的第一行 orders_id 实际上是期望的结果。所以也许我不需要 ORDER BY 来工作或在那里。我能否确定 LIMIT 1 将始终获得数据库中与 WHERE BY 匹配的第一行,或者它是否有可能 return 其他也共享 WHERE BY 过滤器的行之一。

PHP是一种很容易混淆的语言,两种不同的引号其实差别很大。你碰巧把它们搞混了,这是一个很容易犯的错误。要修复它,请尝试将查询更改为:

"SELECT * FROM " . TABLE_ORDERS_STATUS_HISTORY . " where orders_id = '$zv_orders_id' order by orders_status_history_id ASC LIMIT 1"

现在应该可以了。

也看看catcon

的评论