$res = mysql_query("select articles.title, articles.text, articles.id, articles.user_id, users.name from articles left join users on articles.user_id=users.id where $condition order by id desc limit 5, 10");
Такой жестяк часто встретишь, когда пишут код студенты или просто люди торопятся да так что ппц. Нифига не понятно. Запрос написан в стиле write-only. В противовес индусам - нормальные программисты используют определенные правила форматирования кода в запросах. И хоть каждый использует свои, как правило они очень похожи.
Если честно меня бесит, когда запрос формируется налету прямо в параметре функции, поэтому я всегда стараюсь выносить строку запроса в отдельную переменную, если конечно запрос не настолько простейший что там заглючить просто нечему.
$query = "select articles.title, articles.text, articles.id, articles.user_id, users.name from articles left join users on articles.user_id=users.id where $condition order by id desc limit 5, 10";
$res = mysql_query($query);
Если запрос глючит - делаем принт $query - и смотрим что не так - и не надо ничего выдирать, особенно если ф-я в оболочке принимает 100500 параметров, один из которых длиннющий запрос.
Второе правило - все ключевые слова sql должны быть с большой буквы.
$query = "SELECT articles.title, articles.text, articles.id, articles.user_id, users.name FROM articles LEFT JOIN users ON articles.user_id=users.id WHERE $condition ORDER BY id DESC LIMIT 5, 10";
$res = mysql_query($query);
Так уже гораздо понятнее - по ключевым словам можно разобраться что и где находится.
Третье правило - выделять отступами и писать на новой строчке логические части запроса.
Четвертое - использовать псевдонимы таблиц, если их больше 2-х. В конечном итоге получается такой запрос:
$query = "
SELECT
A.title,
A.text,
A.id,
A.user_id,
U.name
FROM
articles AS A
LEFT JOIN
users AS U
ON
A.user_id=U.id
WHERE
$condition
ORDER BY
id DESC
LIMIT
5, 10
";
$res = mysql_query($query);
Некоторые используют конкатенацию в описании запроса, чтобы сделать его меньше, сохранив форматирование - т.е. также как и выше, но скажем 'SELECT '.'A.title' ну и отступы понятное дело также так и у меня, просто что они не в теле запроса. Такой подход делает запрос меньше по размерам и в некотором роде производительнее (т.е. базе пересылать надо меньше), однако форматирование сохраняется только в php коде, но не сохранятеся при выводе и отладке, что неудобно.
Стоит отметить что псевдонимам таблиц стоит давать осмысленные имена. Я часто видел псевдоними t1, t2, t4 - просто номера не дают никакой информации и не помогают с читаемостью таких запросов.
Так-то
Второе правило - отстой из эпохи монохромных моников. С тех пор придумали например подсветку символов, подумайте об этом. А капсить ключевые слова - глупо, и еще глупее читать такой код.
medvedXXL, где Вы видели, чтобы в строчных php-переменных SQL-ные выражения подсвечивались??? В каком это IDE такое возможно?
Ну а по теме - использую конкатенацию не только потому, что короче код запроса становится, но и потому что экранировать параметры нужно через mysql_escape_string…