[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Добавить или обновить
SnowWind
Привет.
Есть 3 таблицы, связанные между собой ключами
t1(id, fruit)
t2(idT2, color)
t3(idT3, type)
Нужно добавить в них новую строку, если нет дубликата в поле fruit, либо обновить колонки color и type, если есть, как это сделать?
FatCat
Сначала сделать селект?

_____________
Бесплатному сыру в дырки не заглядывают...
SnowWind
я не знаю даже как это записать, когда таблица была 1, я делал это так
"INSERT INTO t1 (fruit, color, type)
VALUES ('$fruit', '$color', '$type')
on duplicate key update color = values(color), type = values(type)"
walerus
На коленке набросал, класс я думаю не нужен?
# База данных
$db = new db($config->HostDB, $config->UserDB, $config->PassDB, $config->BaseDB);

// $in_data = array( 'fruit' => 'Груша', 'color' => 'зеленая', 'type' => 'спелая' );
$in_data = array( 'fruit' => 'Картошка', 'color' => 'коричневая', 'type' => 'сырая1' );


$sql = "SELECT EXISTS (SELECT * FROM `t1` WHERE `fruit` = '" . $in_data['fruit'] . "')";
$res = $db->Query( $sql );
$result = $db->FetchRow();

// 0 или 1, НЕ true / false
if ( $result ){

$sql = "UPDATE
`t2`, `t3`, (SELECT `id` FROM `t1` WHERE `fruit` = '"
. $in_data['fruit'] . "') AS `t1`
SET
`t2`.`color` = '"
. $in_data['color'] . "', `t3`.`type` = '" . $in_data['type'] . "'
WHERE
`t2`.`idT2` = `t1`.`id` AND `t3`.`idT3` = `t1`.`id`

"
;
$res = $db->Query( $sql );

}else{

$sql = "INSERT INTO `t1` (`id`, `fruit`) VALUES (NULL, '" . $in_data['fruit'] . "');";
$res = $db->Query( $sql );
$lid = $db->LastInsert();

$sql = "INSERT INTO `t2` (`idT2`, `color`) VALUES ('".$lid."', '" . $in_data['color'] . "')";
$res = $db->Query( $sql );

$sql = "INSERT INTO `t3` (`idT3`, `type`) VALUES ('".$lid."', '" . $in_data['type'] . "')";
$res = $db->Query( $sql );
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.