2013-09-08 3 views
0

Я пытаюсь выбрать материал из базы данных с помощью инструкции LIKE, но я также хотел бы ограничить количество записей, которые я получаю.MySQL LIKE и LIMIT

$query = mysqli_query($connect, 
    "SELECT * FROM proizvodi WHERE `naziv` LIKE %127% ". 
    "AND LIMIT $start, $per_page"); 

Код, который у меня есть, является логическим и не работает. Как это исправить?

+0

Старайтесь избегать 'LIKE '% ...', поскольку он не имеет хорошей производительности. 'LIKE 'XXX%' лучше. –

ответ

2

LIMIT требует кавычки и не может быть соединен с AND.

SELECT * FROM proizvodi WHERE `naziv` LIKE '%127%' LIMIT $start, $per_page 
2

Посмотрите на документацию к заявлению SELECT, вам не нужно использовать AND для присоединения к разделам и LIMIT.

См: http://dev.mysql.com/doc/refman/5.7/en/select.html

SELECT * FROM proizvodi WHERE `naziv` LIKE %127% LIMIT $start, $per_page;

+0

Запрос по-прежнему является логическим, даже если я удаляю «AND» или LIMIT ... – Sidetik

+0

Какая ошибка вы получаете? try '' mysqli_error'' –

+0

Я понял, 'LIKE% 127%' нужны одинарные кавычки. 'LIKE '% 127%'' – Sidetik

0

Предел не является частью, где положение и, следовательно, не AND не допускается.

1

SQL is не гарантированно возвратит те же результаты в том же порядке каждый раз, если вы не используете order by. You код должен выглядеть следующим образом:

SELECT * 
FROM proizvodi 
WHERE `naziv` LIKE %127% 
ORDER BY <something> 
LIMIT $start, $per_page 
0
$query = mysqli_query($connect, 
     "SELECT * FROM proizvodi 
     WHERE `naziv` LIKE %127% 
     ORDER BY naziv ASC 
     LIMIT 10"); 

Это ограничит ваши запросы до 10.

$ начать, $ per_page что-то, чтобы получить руки позже, если это проблема сейчас .. :)