Условия выборки в mysql and

yuross
На сайте с 25.01.2010
Offline
88
750

Здравствуйте

помогите

есть такая выборка

if( strlen( $q ) > 2 )

{

$sql = "SELECT * FROM `".CatalogPeer::TABLE_NAME."` WHERE LOWER(title) REGEXP '" . mb_strtolower( preg_replace( '/s+/', '|', $q , $p ), 'utf8' ) . "'" AND 'is_published' == 1;

$connection = Propel::getConnection();

$stmt = $connection->prepare($sql);

$stmt->execute();

$artists_objects= CatalogPeer::populateObjects($stmt);

Есть столбец в таблице is_published там данные 0 и 1. Нужно что бы искало только по тем записям в которых в ячейке стоит 1.

Код что выше это мой он не работает. Показывает все товары что с 1 что с 0.

Это кусочек кода поиска сайта на symfony. Нужно что бы искало так как прописано и при этом искало только в тех ячейках в которых is_published = 1

Проблема в том как правbльно прописать условия WHERE AND.

bay_ebook
На сайте с 28.05.2010
Offline
111
#1
yuross:
AND 'is_published' == 1;

мускул не пхп, там == ставить не нужно ,достаточно одного =

и еще, имена полей идут не в ' а в ` (скобка разная)

Нужен прогер на php+mysql+понимание чужего кода? (/ru/forum/540660) Вам сюда PHP-шаман (http://php-shaman.pw/)
izbushka
На сайте с 08.06.2007
Offline
110
#2

Тоесть выкинув 90% ненужных букв из вашего поста имеем следующий не работающий запрос, я правильно понял?

"SELECT * FROM `table` WHERE LOWER(title) REGEXP 'some regexp' AND 'is_published' == 1"

Если да, то "==" поменять на "=" и убрать кавычки (или поставить нормальные - `) вокруг 'is_published'

siv1987
На сайте с 02.04.2009
Offline
427
#3
LOWER(title)

Оффтоп.

По моему эта конструкция напрочь отменяет индекс по полю title если он есть... И кроме того http://dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp

MySql:
REGEXP is not case sensitive, except when used with binary strings.
yuross
На сайте с 25.01.2010
Offline
88
#4

сделал как написали сайт перестал работать и ошибка

Parse error: syntax error, unexpected '='

---------- Добавлено 09.10.2013 в 20:13 ----------

получается что в строке два знака ровняется не знаю как прописать условия

izbushka
На сайте с 08.06.2007
Offline
110
#5
yuross:
получается что в строке два знака ровняется не знаю как прописать условия

мне кажется, у вас там проблема с кавычками всех типов. Разберитесь с ними

В mysql нет операции ==

yuross
На сайте с 25.01.2010
Offline
88
#6

Я убрал эту операцию ==

Мне нужно что бы подсказали как правильно написать условия что бы выборка делалась со столбца is_published у которого значения 1.

siv1987
На сайте с 02.04.2009
Offline
427
#7
yuross:
сделал как написали сайт перестал работать и ошибка
Parse error: syntax error, unexpected '='

Это синтаксическая ошибка php. ВЫ что-то не туда добавили/удалили/не хватает кавычки, от чего строка с запросом получается битой. Даже в первом варианте нет закрывающей кавычки, и эта фигня AND 'is_published' == 1 вне запроса, о должна быть тут ) . "' AND `is_published` = 1";

yuross
На сайте с 25.01.2010
Offline
88
#8

siv1987

Спасибо огромное заработало.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий