|
|
|
| Не могу понять, почему в PEAR DB вот так работает:
$result = $db->query( "SELECT * FROM table where col LIKE ?", array('%rin%', '%rin%'));
|
а вот так - нет!
$val = "'%rin%', '%rin%'";
$result = $db->query( "SELECT * FROM table where col LIKE ?", array($val));
|
| |
|
|
|
|
|
|
|
для: aetern
(21.05.2009 в 19:57)
| | На верху небольшая ошибка, нужно
$result = $db->query( "SELECT * FROM table where col LIKE ? or col LIKE ?", array('%rin%', '%rin%'));
|
но всеравно не работает.
Причем, вот так тоже работает:
$val = "%rin%";
$result = $db->query( "SELECT * FROM table where col LIKE ?", array($val));
|
неужели дело в запятой?
или я не правильно понял логику? | |
|
|
|
|
|
|
|
для: aetern
(23.05.2009 в 16:02)
| | Почитал о массивах и сам разобрался.
Как бы эту тему удалить, а то, стыдно? | |
|
|
|
|
|
|
|
для: aetern
(23.05.2009 в 16:31)
| | а что стыдного в том, что разобрались в том, чего не знали?
Написали бы лучше решение. Может кому пригодится. | |
|
|
|
|
|
|
|
для: Trianon
(23.05.2009 в 23:21)
| | Решил вопрос ПРИМЕРНО так:
$val = "ring love big";
$search = explode(" ", $val);
for($i=0;$i<count($search);$i++)
{
if(isset($srch))
{
$where_srch .= ' or col LIKE ?';
}
$srch = 'col LIKE ?';
$where_data[$i] = "%$search[$i]%";
}
$where_srch = $srch.$where_srch;
|
если посмотреть результат
echo '$where_srch = '.$where_srch.'<br><br>$where_data =';
print "<pre>";
print_r ($where_data);
print "</pre>";
|
то он будет выглядеть так:
$where_srch = col LIKE ? or col LIKE ? or col LIKE ?
$where_data =
Array
(
[0] => %ring%
[1] => %love%
[2] => %big%
) | |
|
|
|
|
|
|
|
для: aetern
(13.06.2009 в 13:27)
| | Почему for а не foreach?
и вот это непонятно
if(isset($srch))
{
$where_srch .= ' or col LIKE ?';
}
$srch = 'col LIKE ?';
$where_data[$i] = "%$search[$i]%";
|
$val = "ring love big";
$search = explode(" ", $val);
$where_srch = 'col LIKE ?';
foreach($search as $key=>$value) {
$where_srch .= ' or col LIKE ?';
$where_data[$key] = "%$value%";
}
|
| |
|
|
|
|
|
|
|
для: Valick
(13.06.2009 в 13:31)
| | Согласен насчет foreach в данном примере, но я привел только часть своего кода и не стал его переделывать.
Задумка здесь в том, что я первоначально проверяю массив $search и игнорирую слова меньше 3 символов, пробелы, недопустимые знаки и т.д.
А переменную $i использую для соответствия количества LIKEов и значений.
Насчет
if(isset($srch))
{
$where_srch .= ' or col LIKE ?';
}
$srch = 'col LIKE ?';
$where_data[$i] = "%$search[$i]%";
|
сдесь все просто, в начале не должно быть слова or | |
|
|
|