Here is a MySQL query:
SELECT last_name FROM users ORDER BY last_name
We get all that data into PHP and then run:
$prior = NULL;
do {
$current = array_shift($results);
assert($current >= $prior);
$prior = $current;
} while ($current !== NULL);
Currently this assertion fails for certain inputs. Is it possible to add a COLLATE clause to the MySQL query above to absolutely guarantee that PHP assertion?
Stuff I tried:
- The above code, it doesn't work for certain non-ASCII inputs
ORDER BY email COLLATE utf8_bin
resulted inCOLLATION 'utf8_bin' is not valid for CHARACTER SET 'latin1'
- Maybe this is a duplicate of What is the best collation to use for MySQL with PHP? but that seemed more subjective, I am seeking a specific answer to a specific problem
Others notes:
- If it makes a difference, this column is
latin1
- My PHP PDO wrapper library is https://github.com/fulldecent/thin-pdo
Both came back
<>
, so I deduce that PHP acts likelatin1_bin
(or the_bin
of whatever charset you have).