|
|
|
| Здравствуйте.
Помогите советом плиз. У меня есть массив -
$arr[0] = 'value-0';
$arr[1] = 'value-1';
....
$arr[10] = 'value-10';
|
Мне в базе нужно найти только один из элементов массива. Делать перебор цыклом глупо, а как сделать грамотный запрос я не могу понять.
Спасибо. | |
|
|
|
|
|
|
|
для: kostiaGt
(29.01.2011 в 19:32)
| | >Мне в базе нужно найти только один из элементов массива.
А как он выделяется? И почему нельзя просто взять это конкретное значени и подставить в WHERE-условие? Какая структура таблицы. | |
|
|
|
|
|
|
|
для: cheops
(29.01.2011 в 19:56)
| | В таблице базы:
| id | value |
------------------
| 0 | value-1 |
| 1 | value-2 |
.............
| 30 | value-30 |
|
В массиве
$arr[0] = 'value-0';
$arr[1] = 'value-1';
....
$arr[10] = 'value-10';
|
Мне нужно найти один элемент из базы который соответствует одному элементу массива
например: мне нужно проверить есть ли значение value-2 в базе и если есть - вывести это значение.
Я делаю так:
foreach ($arr as $val) {
$row = mysql_query("SELECT * FROM `my_table` WHERE 'id' = '$val' LIMIT 1");
$res = mysql_fetch_row($row);
if (isset($res['id'])) {
return $res;
}
...
}
|
но, это, как мне кажеться, неправильно.
Я пытаюсь сделать что-то вроде:
$row = mysql_query("SELECT * FROM `my_table` WHERE 'id' IN ('".implode(',', $arr)."') ");
|
т.е получается запрос
SELECT * FROM `my_table` WHERE `id` IN ('value-1', 'value-2', ...'value-10')
|
но, если в таблице есть два или больше совпадений, вернется список, а мне нужен
только первое найденное значение из массива | |
|
|
|
|
|
|
|
для: kostiaGt
(29.01.2011 в 20:23)
| | если mysql_fetch_... в цикл не ставить, то Вы и получите только первое значение.
Более того, учитывая что в запросе у Вас стоит LIMIT 1 , более одного значения запрос не вернет.
Единственное что у Вас не айс - это поиск по полю id , а не по полю value.
Но это нетрудно переделать. | |
|
|
|
|
|
|
|
для: Trianon
(29.01.2011 в 20:33)
| | на счет поиска по id - это я ступил не правильное поле написал. нужно конечно искать по полю value. но, суть вопроса это не меняет.
я использую цикл, для перебора массива, а не для перебора списка данных из базы.
я хочу не вызывать десяток раз функцию mysql_query для вывода одной строки, а придумать один запрос, который бы искал одно поле из
списка значений массива | |
|
|
|
|
|
|
|
для: kostiaGt
(29.01.2011 в 20:23)
| | Попробуйте так сделать
<?php
$query = "SELECT * FROM `my_table` WHERE 'id' = '$arr[1]' LIMIT 1"
$row = mysql_query($query);
$res = mysql_fetch_row($row);
...
?>
|
Или это не совсем то, что вам нужно? | |
|
|
|