Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Требуется вставить массив в таблицу sql

Сообщения:  [1-10]    [11-20]  [21-28] 

 
 автор: Trianon   (12.12.2009 в 22:28)   письмо автору
 
   для: asptema   (12.12.2009 в 22:24)
 

Почему бы не сделать маааленькую табличку, с одной единственной строкой, и одним единственным полем типа LONGTEXT?
И засунуть в эту ячейку весь дамп целевой базы, безо всякой сериализации.

   
 
 автор: asptema   (12.12.2009 в 22:24)   письмо автору
 
   для: Nekifrovv   (26.09.2009 в 13:34)
 

а почему нельзя сериализовать массив и засунуть его в базу?
а потом десериализовать и брать его элементы через [ ] ???

   
 
 автор: Nekifrovv   (26.09.2009 в 13:34)   письмо автору
 
   для: Trianon   (26.09.2009 в 12:33)
 

В общем хотел сделать по-другому но пришлось сделать, используя do while.
Запятые поставил сразу после закрытия скобки, последнюю стер, т.к. в предыдущем случае запятая ставилась после каждого пробела.

Всем спасибо, за помощь!

   
 
 автор: Trianon   (26.09.2009 в 12:33)   письмо автору
 
   для: Nekifrovv   (26.09.2009 в 11:52)
 

Так и что? Вы хотите сказать, что это из-за многострочности ?
однострочный инсерт точно также себя поведет.
Как будет выглядел бы текст корректного SQL-запроса?

   
 
 автор: ride   (26.09.2009 в 12:05)   письмо автору
 
   для: Nekifrovv   (26.09.2009 в 11:52)
 

$row = mysql_fetch_array($res);
ну так в данном случае $row же не многомерный массив!
давайте по порядку:



$res = mysql_query("SELECT * FROM newtable");
$row = mysql_fetch_array($res); //- вы взяли только одну запись, а не все
//в этом случае циклами и многострочными инсертами даже не пахнет:
$ins="({$row['pervoe']},{$row['vtoroe']},{$row['tretie']},{$row['chetvertoe']})"; // и все!


возможно, вам надо так:

$ins="";
$res = mysql_query("SELECT * FROM newtable");
while($row = mysql_fetch_array($res)){
     if($ins!=="")$ins.=",";
     $ins.="({$row['pervoe']},{$row['vtoroe']},{$row['tretie']},{$row['chetvertoe']})";
}

?

   
 
 автор: Nekifrovv   (26.09.2009 в 11:52)   письмо автору
 
   для: Trianon   (26.09.2009 в 11:25)
 

Ок, тогда сначала. Создаю таблицу newtable.

CREATE TABLE `newtable` (
`pervoe` int(10) NOT NULL auto_increment,
`vtoroe` varchar(10) NOT NULL,
`tretie` varchar(10) NOT NULL,
`chetvertoe` varchar(10) NOT NULL,
PRIMARY KEY (`pervoe`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;


INSERT INTO `newtable` VALUES (1, 'значение 1', 'значение 2', 'значение 3');
INSERT INTO `newtable` VALUES (2, 'значение 4', 'значение 5', 'значение 6');

Далее хочу применить многострочный инсерт, а значения в скобках формируются не так как надо (

<?
include ("db.php");

$res = mysql_query("SELECT * FROM newtable");
$row = mysql_fetch_array($res);

$ins="";
foreach($row as $val){
if($ins!="")$ins.=',';
$ins.="({$val['pervoe']},{$val['vtoroe']},{$val['tretie']},{$val['chetvertoe']})";
}
echo $ins;
?>

Выдает:

(1,1,1,1),(1,1,1,1),(з,з,з,з),(з,з,з,з),(з,з,з,з),(з,з,з,з),(з,з,з,з),(з,з,з,з)

   
 
 автор: ride   (26.09.2009 в 11:33)   письмо автору
 
   для: Nekifrovv   (26.09.2009 в 11:12)
 

ну так "чтоТоТам" - это и есть id, field1, field2, field3
действительно, покажите как сделали вы...

   
 
 автор: Trianon   (26.09.2009 в 11:25)   письмо автору
 
   для: Nekifrovv   (26.09.2009 в 10:12)
 

> Что бы я туда не написал - все равно одно и то же получается

Пока что Вы ни пишете ничего.
Ни одной Вашей строки кода я не увидел.

Представьте хоть какой-то вариант - тогда можно будет хотя бы от чего-то отттолкнуться, ошибки разобрать.

   
 
 автор: Nekifrovv   (26.09.2009 в 11:12)   письмо автору
 
   для: ride   (26.09.2009 в 10:50)
 

Должен быть как во втором варианте, где фиелды это название столбцов.

   
 
 автор: ride   (26.09.2009 в 10:50)   письмо автору
 
   для: Nekifrovv   (26.09.2009 в 10:39)
 


//то есть, у вас такой массив
$arr=array(
  0=>array('1', 'b', 'c', 'd'),
  1=>array('2', 'z', 'x', 'c'),
);

//а не такой 

$arr=array(
  0=>array('id'=>'1', 'field1'=>'b', 'field2'=>'c', 'field3'=>'d'),
  1=>array('id'=>'2', 'field1'=>'z', 'field2'=>'x', 'field3'=>'c'),
);

?

   

Сообщения:  [1-10]    [11-20]  [21-28] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования