Witam serdecznie.
Mam sobie dwie tabele, które są ze sobą połączone relacyjnie:
CREATE TABLE IF NOT EXISTS `userDetails` (
`idUser` int(11) UNSIGNED NOT NULL DEFAULT '0',
`city` char(100) NOT NULL DEFAULT '',
`region` char(150) NOT NULL DEFAULT '',
`phone` char(11) NOT NULL DEFAULT '',
`workType` SET('f','m','h') NOT NULL DEFAULT 'f',
`workRegion` enum('c','r','p','z') NOT NULL DEFAULT 'c',
`category` SET('a','m','z','t','n','e','s') NOT NULL DEFAULT 'a',
`photos` char(255) DEFAULT NULL,
KEY `userDetailsFK` (`idUser`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `users` (
`idUser` int(11) UNSIGNED NOT NULL DEFAULT '0',
`email` char(96) NOT NULL DEFAULT '',
`name` char(25) NOT NULL DEFAULT '',
`surname` char(40) NOT NULL DEFAULT '',
`birthday` date NOT NULL DEFAULT '0000-00-00',
`eyeColor` char(25) NOT NULL DEFAULT '',
`hairColor` char(25) NOT NULL DEFAULT '',
`height` smallint(3) UNSIGNED NOT NULL DEFAULT '0',
`footSize` smallint(2) UNSIGNED NOT NULL DEFAULT '0',
`bust` smallint(3) UNSIGNED NOT NULL DEFAULT '0',
`middle` smallint(3) UNSIGNED NOT NULL DEFAULT '0',
`loins` smallint(3) UNSIGNED NOT NULL DEFAULT '0',
`addDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`status` enum('z','o','p') NOT NULL DEFAULT 'p',
PRIMARY KEY (`idUser`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `userDetails`
ADD CONSTRAINT `userDetails_ibfk_1` FOREIGN KEY (`idUser`) REFERENCES `users` (`idUser`) ON DELETE CASCADE ON UPDATE CASCADE;
i mój problem polega na tym iż nie mogę za pomocą PHP (dokładnie PDO) wykonać nic poza SELECT'em tzn. nie mogę wykonać DELETE, UPDATE itp.
Jeśli robię coś takiego:
<?php
if($_GET['todo'] == 1
&& isset($_GET['id'])){ $dropData = "DELETE FROM users WHERE idUser = :id";
$stmt = $this->_dbh->prepare($dropData);
$stmt->bindParam(':id', $_GET['id'], PDO::PARAM_INT);
$aff += $stmt->execute();
}
?>
to taka akcja się wykonuje ale tylko wtedy kiedy jest spełniony warunek (czyli istnieją GET'y) i nie wykonuje się w bazie tylko na stronie.
Kiedy kasuje GET'y to wszystko powraca tak jak było przed wykonaniem zapytania.
Domyślam się że problem tkwi w ON DELETE CASCADE ON UPDATE CASCADE; ale nie jestem pewien - testowałem bez łączenia relatywnego i wtedy elegancko zapytania sie wykonują, a jak jest ta relacja to juz nie.
Ma ktoś może na to rozwiązanie ?