2015-04-30 5 views
0

В PHP я написал функцию php в контроллере getItems, чтобы получить все элементы при вызове ajax с помощью javascript/jquery. Я передаю параметр limit, чтобы ограничить элементы, которые можно получить с сервера.Игнорировать параметр, если нет, в запросе Mysql

Это прекрасно работает, но как использовать тот же метод для получения всех предметов? В настоящее время приведенный ниже запрос работает тогда и только тогда, когда я предоставляю значение параметра limit.

"SELECT DISTINCT name, id from TABLE_NAME 
     ORDER BY shared_date DESC 
     LIMIT @[email protected]"; 

Как получить все предметы, изменив тот же запрос?

В настоящее время я решаю это, имея два разных запроса: один с лимитом и без ограничений. (, которые я чувствую себя грязным)

+0

Как вы строите свой запрос? – Cerbrus

+0

@Cerbrus Я не очень понимаю это, но с помощью моего коллеги (_who бит занят_) он сказал, что он построен на запросе пользовательской сборки, используемом в нашем офисе. –

+0

Это не отвечает на вопрос «как» _. Какой код вы используете для добавления этого параметра в запрос? – Cerbrus

ответ

-2
$limit = ''; 
if ($paramLimit != NULL && is_int($paramLimit)) { 
    $limit = " LIMIT $paramLimit "; 
} 

"SELECT DISTINCT name, id from TABLE_NAME 
     ORDER BY shared_date DESC 
     $limit"; 
+1

Это просто запрос на SQL-инъекцию. – Cerbrus

+0

Он просто спросил логику, и я положил. Хорошо помнить о SQL-инъекции. Напомните ему об этом –

0

Одним из способов было бы установить предел в качестве дополнительного аргумента в getItems. Например что-то вроде этого:

function getItems($limit=false){ 
    $sql = "SELECT DISTINCT name, id from TABLE_NAME 
    ORDER BY shared_date DESC " 
    if($limit){ 
     $sql .= "LIMIT $limit"; 
    } 
    ... 
} 

Я не знаю, что вы собираетесь отправить запрос в подготовленном заявлении или нет, так что я оставил его, как это (SQL-инъекций)

Смежные вопросы