Автор Тема: Помогите с массивом  (Прочитано 4097 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн slash2k

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите с массивом
« : 27 Августа 2005, 17:26:35 »
Есть массив.


$arr
[1] = "Груши" 
$arr[2] = "Яблоки" 
$arr[3] = "Апельсины" 


Мне нужно вставить в базу данных в поле items этот самый массив. Делаю так:

$arr 
print_r($arr); 
$sql "INSERT INTO my_table (items) values (\'$arr\')"
$result mysql_query ($sql); 


Но вот когда делаю запрос на этот массив из БД:


$sql 
"SELECT * FROM my_table WHERE id=1" 
$result mysql_query ($sql); 
$row mysql_fetch_array($result); 
$arr $row[\'items\']; 



У меня получается, что преременная $arr уже не массив а строка.
Как сделать чтобы это был массив?

Оффлайн Greg

  • пинёг
  • Ветеран
  • *****
  • Сообщений: 618
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.bsfera.ru
Помогите с массивом
« Ответ #1 : 27 Августа 2005, 18:04:37 »
очевидно нужно сделать цикл с количеством итераций равным количеству элементов массива, а затем в этот же цикл засунуть запрос к базе, который будет по очередности брать элемент массива и заталдыкивать его в бтаблицу
Пространные размышления об ИТ и все что вокруг

Оффлайн hoblin

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://master-oil.com
Помогите с массивом
« Ответ #2 : 28 Августа 2005, 12:35:53 »
slash2k
Вроде так можно...

function insert($arr){
    global 
$db;
    
$string implode("|||"$arr);//Array to string
    
$result $db->sql_query("INSERT INTO my_table (items) values (\'$string\')");
    if(!
$result$db->sql_error();
}
function 
select($id){
    global 
$db;
    
$result $db->sql_query("SELECT * FROM my_table WHERE id=\'$id\'");
    if(!
$result$db->sql_error();
    
$string $db->sql_fetchrow($result);
    
$arr explode("|||"$string);//String to array
    
return $arr;
}
:( => RTFM => :)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Помогите с массивом
« Ответ #3 : 28 Августа 2005, 13:59:13 »
hoblin
что за бред ты тут написал?
не можешь базу данных от файла со счётными палочками отличить?
как привык копошиться с палочками в файле - то же самое и в БД пихаешь?
мало того, что сам не умеешь - так ещё и советы давать другим лезешь

Оффлайн Демет

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 29
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите с массивом
« Ответ #4 : 29 Августа 2005, 12:30:04 »
если я правильно понял суть проблемы, то можно использовать serialize при записи в таблицу и unserialize при выборке, что бы получить обратно иходный массив.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Помогите с массивом
« Ответ #5 : 29 Августа 2005, 12:39:27 »
slash2k
твоя поблема в непонимании такого понятия как "типы данных".
В пхп есть такой тип данных как массив.
В mysql нет такого типа данных как массив, поэтому просто так записать массив в mysql нельзя.

Есть разные пути решения этой задачи, но они зависят от того, как будут использоваться данные массива в дальнейшем
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Помогите с массивом
« Ответ #6 : 29 Августа 2005, 13:46:09 »
slash2k
[off]И свои пять копеек, не претендуя на оригинальность[/off]
1. Правильно: для каждого элемента массива делать запись в базу. Соответственно, при помощи отдельного запроса.
2. Некорректно, но может пригодиться: записывать массив в поле БД как serialize($array) - как строку. При выводе делать unserialize.
LJ: Backslashed life (rss)

Оффлайн slash2k

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите с массивом
« Ответ #7 : 31 Августа 2005, 11:58:56 »
Спасибо огромное! Наверное попробую с serialize, т.к кол-во элементов массива динамическое.

Оффлайн hoblin

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://master-oil.com
Помогите с массивом
« Ответ #8 : 01 Сентября 2005, 18:51:12 »
и от меня спасибы. Завтра же перепишу implode на serialize :)
:( => RTFM => :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28