Простите за глупость!
Такая проблема: есть БД(mysql), есть таблица пользователей, и поле с их id, мне надо извлечи все id, и организовать их в массив. Я делаю так а оно не работает! Вот мой запрос:
$query = mysql_query("SELECT id FROM users");
$result = mysql_fetch_array($query);
print_r ($result);
Я не пойму в чем проблема, ошибки не выводит но выдает совсем не то! Выдает значения всех полей самой первой записи!
Помогите пожалуйста!!!
Спустя 17 минут, 14 секунд (22.08.2010 - 21:26) Rand написал(а):
Естесвенно, ведь mysql_fetch_array возвращает только одну запись (при каждом новом вызове, следующию), поэтому это надо делать в цикле:
$query = mysql_query("SELECT id FROM users");
while($result = mysql_fetch_array($query)) {
$arr[]=$result;
}
print_r($arr);
Спустя 10 часов, 58 минут, 40 секунд (23.08.2010 - 08:25) linker написал(а):
Только mysql_fetch_assoc();
Спустя 17 минут, 46 секунд (23.08.2010 - 08:43) Rand написал(а):
linker, да ладно тебе, мы же не знаем, какие индексы автору нужны
![wink.gif](http://phpforum.ru/html/emoticons/wink.gif)
Спустя 26 минут, 30 секунд (23.08.2010 - 09:09) linker написал(а):
Для ассоциативного результата - mysql_fetch_assoc()
Для числового - mysql_fetch_row()
Если уж пишите mysql_fetch_array($result), то указывайте какой нужен результат: MYSQL_BOTH, MYSQL_ASSOC, MYSQL_NUM, например если нужен смешанный массив, то пишут mysql_fetch_array($result, MYSQL_BOTH). Не надо гадать, что человеку нужно, нужно просто писать правильно.
Для числового - mysql_fetch_row()
Если уж пишите mysql_fetch_array($result), то указывайте какой нужен результат: MYSQL_BOTH, MYSQL_ASSOC, MYSQL_NUM, например если нужен смешанный массив, то пишут mysql_fetch_array($result, MYSQL_BOTH). Не надо гадать, что человеку нужно, нужно просто писать правильно.
Спустя 4 часа, 48 минут, 57 секунд (23.08.2010 - 13:58) Rand написал(а):
Цитата |
Не надо гадать, что человеку нужно, нужно просто писать правильно. |
И где же здесь написано не правильно, эксперт? То, что второй параметр опущен? Автор его не написал, следует предполагать, что автору нужен смешанный массив, поскольку нам всем известно, что значение второго параметра функции mysql_fetch_array по умолчанию - MYSQL_BOTH, его писать не нужно. Да, я согласен с тем, что с вероятностью 90%, автор даже не задумывался, какие ключи ему нужны, но это дело принципа - отвечать на конкретный вопрос автора, руководствуясь его исходным кодом, а не навязывать ему свои предпочтения. Поэтому меня смутило твоё утверждение, что здесь нужно использовать mysql_fetch_assoc, когда автор об этом даже и не спрашивал. Всё, здесь больше писать ничего не буду, ибо флуд.
Спустя 3 минуты, 27 секунд (23.08.2010 - 14:02) linker написал(а):
Нужно отвечать не только на вопросы, но и делать это корректно и учить как надо правильно делать. Это не предпочтения, а жестокая необходимость, когда занимаешься программированием, а не играми в бирюльки.
Спустя 3 часа, 19 минут, 9 секунд (23.08.2010 - 17:21) PiratXXX написал(а):
Всем большое спасибо за то что заглянули!!!
Но запрос который написал Rand выводит следуещие:
а мне надо так:
Для чего мне это надо? Для того чтобы: я получаю методом get не кое значение, потом мне надо получить все значения id и занести их в массив, и проверить есть ли полученное значение в массиве!
Может кто-то знает вариант получше скажите...
Но запрос который написал Rand выводит следуещие:
Array ( [0] => Array ( [0] => 3 [id] => 3 ) [1] => Array ( [0] => 4 [id] => 4 ) [2] => Array ( [0] => 5 [id] => 5 ) [3] => Array ( [0] => 777 [id] => 777 ) )
а мне надо так:
Array ([0] => 3, [1] => 4, [2] => 5, [3] => 777)
Для чего мне это надо? Для того чтобы: я получаю методом get не кое значение, потом мне надо получить все значения id и занести их в массив, и проверить есть ли полученное значение в массиве!
Может кто-то знает вариант получше скажите...
Спустя 34 минуты, 45 секунд (23.08.2010 - 17:56) Nord написал(а):
Цитата |
а мне надо так: Array ([0] => 3, [1] => 4, [2] => 5, [3] => 777) |
Ну, вы и выбирайте из массива то, что вам нужно:
$res = mysql_query("SELECT id FROM users");
while($row = mysql_fetch_row($res)) {
$arr[] = $row[0];
}
print_r($arr);
Цитата |
Для того чтобы: я получаю методом get не кое значение, потом мне надо получить все значения id и занести их в массив, и проверить есть ли полученное значение в массиве! |
Эм, а нельзя сразу в запросе проверить, есть ли значение в базе?
Спустя 2 часа, 18 минут, 27 секунд (23.08.2010 - 20:14) Rand написал(а):
Цитата |
мне надо получить все значения id и занести их в массив, и проверить есть ли полученное значение в массиве! |
Если всё что тебе нужно, это проверить есть ли в таблице пользователь с таким id, то ничего в массив заносить не нужно, всё можно сделать посредством sql:
$res=mysql_query("SELECT COUNT(*) FROM users WHERE id='".$user_id."'") or die(mysql_error());Где $user_id содержит значение твоей гет-переменной.
if(mysql_result($res, 0) > 0) {
echo "Пользователь найден!";
}
else {
echo "Пользователь не найден!";
}
А если тебе всё же нужен нумерованный массив ешё и для других целей - тогда решение выше.
_____________
http://flibro.com/