現在、PHP と MySQL で非常に奇妙な問題が発生しています。
日付で並べ替えようとしているデータのテーブルがあります。しかし、2 つの奇妙なことに遭遇します。
- アプリで PHP ページネーション (SQL で LIMIT を使用) を使用し、同じ日付のレコードが 2 ページ以上ある場合、2 ページ目にスクロールすると順序が変更され、その結果、いくつかのレコードが表示されます。最初のページにあったレコードと、まったく表示されないレコードがあります。
- SQL コマンドと返された行の ID を出力して、これをデバッグしました。PHP が出力した SQL コマンドの 1 つをコピーして貼り付け、そのコマンドを phpMyAdmin に直接挿入したところ、別の順序で設定された値が返されました。
これは私のコマンドです:
SELECT DISTINCT a.id
FROM orders as a, companies as b, orderProducts as e
WHERE a.companyId = b.id AND a.id = e.orderId AND a.deleted = 0 AND a.id <> 0
ORDER BY a.dateReceived DESC
LIMIT 45, 15
このコマンドは、phpMyAdmin を介して行うと期待どおりに機能するようです。同じ順序を保持しますが、PHP によって変更されます。
これは ID を出力するための私のコードなので、PHP のものではないと思います。
$result = mysql_query( $query ) or die( 'A mysql error has occured: ' . mysql_error(). $query );
$ids = array();
while($row = mysql_fetch_assoc($result)) {
$ids[]=$row['id'];
}
if( $_GET['debug'] == "true" ) {
echo "Query: ".$query." IDs: ";
print_r( $ids );
}
多分それはそれらの結合に関係していますか?
何か案は?