[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: WHERE IN AND IN
MaximGQ
Ребята, подскажите как правильно сделать запрос к базе данных, используя несколько раз IN и AND; понимаю, что нужно поставить скобки правильно, вроде все перепробовал.
Пример:

"SELECT * FROM rugs WHERE col_id IN ($col_id) AND `size` IN ($size) AND color IN ($color)"

Переменные в скобках - массивы(одиночно работают, скажем, "SELECT * FROM rugs WHERE col_id IN ($col_id)"
Пробовал все пары соответственно в скобки брать, все вместе в скобки, последнюю пару в скобки и т.д.
Выводит "...for the right syntax to use near ') AND color IN ()' at line 1"




Спустя 34 минуты (22.11.2011 - 13:00) Семён написал(а):
Покажи в итоге как выглядит запрос, после подстановки твоих переменных

Спустя 2 минуты, 51 секунда (22.11.2011 - 13:03) MaximGQ написал(а):
Мистика какая-то...

ВОТ ЭТО работает:
"SELECT * FROM rugs WHERE col_id IN ($col_id) AND `size` IN ($size) AND color IN ($color)"

не вижу разницы...

Спустя 2 минуты, 59 секунд (22.11.2011 - 13:06) Renden написал(а):
MaximGQ
Пробел мб забыл доэтого?)

Спустя 21 минута, 1 секунда (22.11.2011 - 13:27) MaximGQ написал(а):
Скорей всего, или скобку лишнюю поставил
Кому интересно - код:

Часть на одной странице:

<form action="search_result.php" method="POST">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="search_td_left">Collection</td>
<td class="search_td_right">
<?php
$cols = 4;
$table = '<table border="0" cellpadding="0" cellspacing="0">';
for ($i=0;$i<$totalRows_collection;$i+=$cols)
{
$table .= '<tr>';
for ($e=0;$e<$cols;$e++)
{
$id = $i + $e;
$table .= '<td class="search_td_right_inside">';
$table .= ($id<$totalRows_collection)?'
<label><input type="checkbox" name="col_id['.$id.']" value="'.mysql_result($collection,$id,col_id).'" checked="checked" />'.mysql_result($collection,$id,collection).'</label>
' :'&nbsp;';
$table .= '</td>';
}
$table .= '</tr>';
}
$table .= '</table>';

echo $table;
?>
</td>
</tr>
<tr>
<td class="search_td_left">Size</td>
<td class="search_td_right">
<?php
$cols = 5;
$table = '<table width="100%" border="0" cellpadding="0" cellspacing="0">';
for ($i=0;$i<$totalRows_sizes;$i+=$cols)
{
$table .= '<tr>';
for ($e=0;$e<$cols;$e++)
{
$id = $i + $e;
$size = mysql_result($sizes,$id,size);
$table .= '<td class="search_td_right_inside">';
$table .= ($id<$totalRows_sizes)?'
<label><input type="checkbox" name="size['.$id.']" value="'.$size.'" checked="checked" />'.$size.'</label>
' :'&nbsp;';
$table .= '</td>';
}
$table .= '</tr>';
}
$table .= '</table>';

echo $table;
?></td>
</tr>

На другой:

foreach($_POST['col_id'] as $col_id_a) {
$col_id_sql[] = '\''.$col_id_a.'\'';
}
$col_id = implode(',',$col_id_sql);

foreach($_POST['size'] as $size_a) {
$size_sql[] = '\''.$size_a.'\'';
}
$size = implode(',',$size_sql);

foreach($_POST['color'] as $color_a) {
$color_sql[] = '\''.$color_a.'\'';
}
$color = implode(',',$color_sql);

mysql_select_db($database_Rugs, $Rugs);
$query_search = sprintf("SELECT * FROM rugs WHERE col_id IN ($col_id) AND `size` IN ($size) AND color IN ($color) AND (price BETWEEN $s AND $s)", GetSQLValueString($_POST['price_min'], "text"), GetSQLValueString($_POST['price_max'], "text"));
$search = mysql_query($query_search, $Rugs) or die(mysql_error());
$row_search = mysql_fetch_assoc($search);
$totalRows_search = mysql_num_rows($search);

Спустя 4 минуты, 47 секунд (22.11.2011 - 13:32) MaximGQ написал(а):
А вообще ошибка была в том, что один из POSTов был пустой, на веб странице я выбор не делал(Checkbox). Надо доп условия поставить, чтоб при пустых полях работало
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.