Синтаксическая ошибка около LIMIT - PullRequest
0 голосов
/ 31 марта 2011

Я работаю над учебным курсом по PHP и считаю, что синтаксис mysql устарел.Это функция

function get_subject_by_id($subject_id) {
    global $connection;
    $query = "SELECT * ";
    $query .= "FROM subjects ";
    $query .= "WHERE id=" . $subject_id ." ";
    $query .= "LIMIT 1";
    $result_set = mysql_query($query, $connection);
    confirm_query($result_set);
    if ($subject = mysql_fetch_array($result_set)) {
        return $subject;
    } else { 
            return NULL;
    }
}

, и я получаю эту ошибку: Ошибка запроса к базе данных: у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с «LIMIT 1» в строке 1

Я не уверен, что я делаю здесь неправильно.Любая помощь от кого-то, кто знает, что могло измениться в синтаксисе, будет принята с благодарностью.

Ответы [ 3 ]

2 голосов
/ 31 марта 2011
$query = "SELECT *
          FROM subjects
          WHERE id = $subject_id 
          LIMIT 1";

Запрос не выполняется, поскольку $ subject_id пуст.

SELECT * FROM subjects WHERE id= LIMIT 1
0 голосов
/ 31 марта 2011

Две дикие догадки:

  • Вы не указали / не экранировали $subject_id, которая содержит строку или что-то нецелое (например, FALSE, NULL или пустую строку).
    Даже если это не причина, ваш скрипт уязвим для SQL-инъекций .
  • Вы используете Mac для кодирования и ошибочно вставили неразрывный пробел
0 голосов
/ 31 марта 2011

очевидно, что $subject_id вызывает проблему, проверьте, правильно ли передано значение.

...