Честно говоря, невозможно сказать, что именно точно неправильно с этим кодом, не зная, какие значения подставляются в запросе вместо переменных.
Кроме того, код ввопрос может быть предметом атак с использованием SQL-инъекций.
Если я могу собрать другие предложения, которые позволят убедиться, что в этом коде не будет ошибок,
function get_subject_by_id($subject_id) {
global $connection;
$query = "SELECT * ";
$query .= "FROM subjects ";
$query .= "WHERE id='" . mysql_real_escape_string($subject_id) ."' ";
// note the quotes and escaping wrapper
$query .= "LIMIT 1";
$result_set = mysql_query($query, $connection);
confirm_query($result_set);
// if no rows are returned, fetch array will return false
if ($subject = mysql_fetch_array($result_set)) {
return $subject;
} else {
return NULL;
}
}
Кроме того, использование глобальных переменныхв наши дни это плохая практика, поэтому я полагаю, что пример, который вы используете, устарел.