|
Posted by Justin Koivisto on 02/04/06 09:22
comp.lang.php wrote:
>
> Ok using your function:
>
> [PHP]
> if (!function_exists('change_first_order_flag')) {
> function change_first_order_flag($orderBy){
> $tmp = explode('__SPLIT__HERE__', preg_replace('`(asc|desc)`i',
> '__SPLIT__HERE__$1', $orderBy));
> if (count($tmp) > 1) {
> // there are at least 2 elements
> // therefore, it was in there at least once
> if (substr(strtolower($tmp[1]), 0, 3) == 'des') { // it was in
> descending order
> $tmp[1] = 'as' . substr($tmp[1], 3);
> } else { // it was in ascending order
> $tmp[1] = 'des' . substr($tmp[1], 3);
> }
> }
> return join($tmp);
> }
> }
>
> [/PHP]
>
> Produced the following MySQL query syntax error:
>
> [quote]
> Fatal error: You have an error in your SQL syntax; check the manual
> that corresponds to your MySQL server version for the right syntax to
> use near 'des, upper(s.student_firs' at line 1 using query:
> [/quote]
>
> I'll keep looking at it but apparently it chops the ORDER BY clause
> incorrectly if the original ORDER BY clause contains ".. asc"
>
> Phil
Change:
$tmp[1] = 'des' . substr($tmp[1], 3);
To:
$tmp[1] = 'des' . substr($tmp[1], 2);
That should do it... I was in a hurry to get out of the office, so i
didn't test it.
Navigation:
[Reply to this message]
|