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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: запись в одну и туже строку с помощью двух запросов
 
 автор: dina   (28.02.2006 в 09:39)   письмо автору
 
 

можно ли так как нибудь сделать.
Например один запрос записывает в таблицу в определенные столбцы.

$query="insert into  addgruz(date, dateoff) values(now(),now()+interval 2 day)"; 

Другой запрос записывает данные в эту же строку в другие столбцы

$query="insert into 'addgruz'(gruz_id, gruz, ves, v, adr, ot, do, tam, tip_kuz, zagr, kolmash, note, kontakt) values('',
'$gruz',
'$ves',
'$v',
'$adr',
'$ot',
'$do',
'$tam',
'$tip_kuz',
'$zagr',
'$kolmash',
'$note',
'$kontakt')";

   
 
 автор: elenaki   (28.02.2006 в 09:49)   письмо автору
 
   для: dina   (28.02.2006 в 09:39)
 

второй запрос должен делать не insert, а update (т.к. строка уже существует). id строки,
вставленной первым запросом, можно узнать функцией LAST_INSERT_ID().

   
 
 автор: dina   (28.02.2006 в 10:52)   письмо автору
 
   для: elenaki   (28.02.2006 в 09:49)
 

пыталась, но не получается
куда писать LAST_INSERT_ID()

if  ($date==0)  $query="insert into  addgruz(gruz_id,date, dateoff) values(last_insert_id(), now(),now()+interval 2 day)"; 
if  ($date==1)  $query="insert into  addgruz(date, dateoff) values('".date('Y-m-d h:i:s',$_POST['DD_Month'])."','$t'+interval $addday day)"; 
if  ($date==2)  $query="insert  into  addgruz(date, dateoff) values(now(),now()+interval 2 month)"; 

$query="update into addgruz(gruz_id, gruz, ves, v, adr, ot, do, tam, tip_kuz, zagr, kolmash, note, kontakt) values( 'LAST_INSERT_ID()',
'$gruz',
'$ves',
'$v',
'$adr',
'$ot',
'$do',
'$tam',
'$tip_kuz',
'$zagr',
'$kolmash',
'$note',
'$kontakt')";

mysql_query($query);

echo mysql_error();


выдает ошибку

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'into addgruz(gruz_id, gruz, ves, v, adr, ot, do, tam, tip_kuz,

   
 
 автор: elenaki   (28.02.2006 в 10:56)   письмо автору
 
   для: dina   (28.02.2006 в 10:52)
 

$find_trans_query = mysql_query("select LAST_INSERT_ID()") or die(mysql_error());
$find_trans = mysql_fetch_row($find_trans_query);
$last_id = $find_trans[0];


сначала узнаем последний id, потом сделаем update строки с этим id

$query="update into addgruz(gruz_id, gruz, ves, v, adr, ot, do, tam, tip_kuz, zagr, kolmash, note, kontakt) values( 
'', 
'$gruz', 
'$ves', 
'$v', 
'$adr', 
'$ot', 
'$do', 
'$tam', 
'$tip_kuz', 
'$zagr', 
'$kolmash', 
'$note', 
'$kontakt') 
WHERE id = ".$last_id; 

mysql_query($query); 

echo mysql_error();

   
 
 автор: dina   (28.02.2006 в 11:02)   письмо автору
 
   для: elenaki   (28.02.2006 в 10:56)
 

а функция update так пишется update into ?
или по другому?
UPDATE table_name SET field_name1='var1', field_name2='var2',... WHERE (выражение)

   
 
 автор: elenaki   (28.02.2006 в 11:06)   письмо автору
 
   для: dina   (28.02.2006 в 11:02)
 

ох. не заметила. вот так, конечно, надо:


UPDATE table_name SET field_name1='var1', field_name2='var2',... WHERE (выражение)

   
 
 автор: dina   (28.02.2006 в 11:34)   письмо автору
 
   для: elenaki   (28.02.2006 в 11:06)
 

не записывается в таблицу ни чего


$query="insert into addgruz(gruz_id, gruz, ves, v, adr, ot, do, tam, tip_kuz, zagr, kolmash, note, kontakt)  values('',
'$gruz',
'$ves',
'$v',
'$adr',
'$ot',
'$do',
'$tam',
'$tip_kuz',
'$zagr',
'$kolmash',
'$note',
'$kontakt')";

$find_trans_query = mysql_query("select LAST_INSERT_ID()") or die(mysql_error()); 
$find_trans = mysql_fetch_row($find_trans_query); 
$last_id = $find_trans[0]; 
$t=date('Y-m-d h:i:s',$_POST['DD_Month']);                
if  ($date==0)  $query="update addgruz set  date=now(), dateoff=now()+interval 2 day  where (gruz_id='.$last_id')";

   
 
 автор: elenaki   (28.02.2006 в 11:52)   письмо автору
 
   для: dina   (28.02.2006 в 11:34)
 

первый запрос не выполняется. вы только присваиваете переменной значение, а кто MySQL
команду даст на исполнение запроса? поэтому нет и последнего id и второй запрос не
выполняется, т.к. для него нет нужного условия. второй запрос тоже неплохо бы выполнить :)

mysql_query($query) or die (mysql_error()); - выполнение запроса или выдача ошибки

   
 
 автор: dina   (28.02.2006 в 12:19)   письмо автору
 
   для: elenaki   (28.02.2006 в 11:52)
 

Извините, дала не полность код.
Теперь так, но в колонку date и dateoff ничего кроме нулей не пишется

$query="insert into addgruz(gruz_id, gruz, ves, v, adr, ot, do, tam, tip_kuz, zagr, kolmash, note, kontakt)  values('',
'$gruz',
'$ves',
'$v',
'$adr',
'$ot',
'$do',
'$tam',
'$tip_kuz',
'$zagr',
'$kolmash',
'$note',
'$kontakt')";
mysql_query($query);
$find_trans_query = mysql_query("select LAST_INSERT_ID()") or die(mysql_error()); 
$find_trans = mysql_fetch_row($find_trans_query); 
$last_id = $find_trans[0]; 
$t=date('Y-m-d h:i:s',$_POST['DD_Month']);                
if  ($date==0)  $query1="update addgruz set  date=now(), dateoff=now()+interval 2 day  where (gruz_id='.$last_id')";
if  ($date==1)  $query1="insert into  addgruz(date, dateoff) values('".date('Y-m-d h:i:s',$_POST['DD_Month'])."','$t'+interval $addday day)"; 
if  ($date==2)  $query1="insert  into  addgruz(date, dateoff) values(now(),now()+interval 2 month)"; 
mysql_query($query1);
echo mysql_error();

   
 
 автор: dina   (28.02.2006 в 12:23)   письмо автору
 
   для: dina   (28.02.2006 в 12:19)
 

Записалось, убрала точку

gruz_id='.$last_id'


С этими точками, кавычками замучалась, где можно почитать о них. Где и при каких случаях ставить.

   
 
 автор: elenaki   (28.02.2006 в 12:30)   письмо автору
 
   для: dina   (28.02.2006 в 12:23)
 

gruz_id='.$last_id.' - тоже верно. точка тут - символ конкатенации (склеивания) строк.

   
 
 автор: dina   (28.02.2006 в 12:46)   письмо автору
 
   для: elenaki   (28.02.2006 в 12:30)
 

Подскажите как тут правильно написать
[code]
dateoff='".$t."'+interval $addday day
[/code

все это работает]

   
 
 автор: elenaki   (28.02.2006 в 12:55)   письмо автору
 
   для: dina   (28.02.2006 в 12:46)
 

dateoff=$t." interval ".$addday." day ";

   
Rambler's Top100
вверх

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