Войти

Показать полную графическую версию : [решено] Объединить результат mysql_fetch_array() в одну переменную


D_Master
08-07-2009, 04:14
Всем привет!

Подскажите, пожалуйста, каким образом можно объединить весь результат функции mysql_fetch_array(); в одну переменную?
Обычно я делаю так:
<?
$sql = mysql_query("SELECT `name` FROM `users` WHERE `name` LIKE 'Alex%' ");
$rows = mysql_fetch_array($sql);
do{
echo $rows['name'].'<br>';
}
while($rows = mysql_fetch_array($sql));
?>
Выведет, к примеру,
Alex
AlexMe
Alexander
Но сейчас понадобилось вернуть все данные массива из своей функции и затем только вывести на экран.
Должно получиться что-то вроде такого:
Alex<br>AlexMe<br>Alexander<br>

Sham
08-07-2009, 04:32
т.е. рекурсивно склеить элементы массива? см. пример (http://ru.php.net/manual/ru/function.implode.php#84788).

Sham
08-07-2009, 04:47
по умолчанию mysql_fetch_array (http://ru.php.net/manual/ru/function.mysql-fetch-array.php) содержит и числовой и ассоциативный массивы, поэтому при склеивании будут дубли. Чтобы избежать этого, нужно вторым параметром добавить константу MYSQL_ASSOC (чтобы оставить только ассоциативный)... либо юзать mysql_fetch_assoc (http://ru.php.net/manual/ru/function.mysql-fetch-assoc.php)...

D_Master
08-07-2009, 04:57
см. пример. »
То что надо, спасибо большое!
<?php

function array_implode($arrays, &$target = array()) {
foreach ($arrays as $item) {
if (is_array($item)) {
array_implode($item, $target);
} else {
$target[] = $item;
}
}
return $target;
}

$connect_db = mysql_connect('localhost', 'user', 'password');
$select_db = mysql_select_db('database', $connect_db);
$sql = mysql_query("SELECT `name` FROM `users` WHERE `name` LIKE 'Alex%' ");
$row = mysql_fetch_array($sql);

$return = array();
do
{
$return[count($return)] = $row['name'].'<br>';
}
while($row = mysql_fetch_array($sql));

echo join(' ', array_implode($return));
/*
Выводит:

Alex
AlexMe
Alexander

*/
?>

Igor_I
08-07-2009, 19:35
А как вам такой вариант? Все значения пишем в массив, а потом как хотим так и выводим.
<?php

$connect_db = mysql_connect('localhost', 'user', 'password');
$select_db = mysql_select_db('database', $connect_db);

$sql = mysql_query("SELECT `name` FROM `users` WHERE `name` LIKE 'Alex%' ");

$return = array();

while($row = mysql_fetch_array($sql))
{
$return [$i][0] = $row['name'];
++$i;
};
?>

Coutty
08-07-2009, 19:46
Igor_I, разве можно называть переменную зарезервированным словом return?

Igor_I
08-07-2009, 21:38
Извините, :) я особо не раздумывал над переделкой примера. Обычно названия переменных делаю понятными. В данном случае было бы - $name или $sqlname

proxy
08-07-2009, 21:38
Igor_I, разве можно называть переменную зарезервированным словом return? »
не знаю на сколько можно или нельзя - в соответсвие языку, но раобтает без ошибок.
и даже такой вариант: $include, и такой $function ...

Sham
09-07-2009, 07:30
переменную можно назвать любым словом, даже нецензурным :) (http://ru.php.net/manual/ru/language.variables.basics.php)

Igor_I
10-07-2009, 17:23
Sham, это понятно, просто есть слова которые без $ могут что-то обозначать, лучше такие не использовать.




© OSzone.net 2001-2012