Возможный дубликат:
MySQL Вставка в несколько таблиц? (Нормализация базы данных?)
Я пытаюсь использовать PDO для вставки моих записей в 2 таблицы, у меня есть следующее
try { // Connect and create the PDO object $conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb); $conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO `directory` (`First_Name`,`Surname`,`Nicknames`) VALUES (:firstname, :surname, :nicknames) "; $statement = $conn->prepare($sql); $statement->bindValue(":firstname", $firstname); $statement->bindValue(":surname", $surname); $statement->bindValue(":nicknames", $nicknames); $count = $statement->execute(); $conn = null; // Disconnect } catch(PDOException $e) { echo $e->getMessage(); }
который вставляет мои данные в 1 таблицу в порядке, если я использую (что я предполагаю быть corrct), однако моя страница не отображает и не выводит исходный код? Может ли кто-нибудь увидеть, если я что-то не так?
try { // Connect and create the PDO object $conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb); $conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO `directory`, `nicknames` (`First_Name`,`Surname`,`Nicknames`) VALUES (:firstname, :surname, :nicknames) "; $statement = $conn->prepare($sql); $statement->bindValue(":firstname", $firstname); $statement->bindValue(":surname", $surname); $statement->bindValue(":nicknames", $nicknames); $count = $statement->execute(); $conn = null; // Disconnect } catch(PDOException $e) { echo $e->getMessage(); }
Это недействительно SQL; вам нужно делать их отдельно. Может быть:
$sql = " INSERT INTO `directory`(`First_Name`,`Surname`,`Nicknames`) VALUES (:firstname, :surname, :nicknames); INSERT INTO `nicknames`(`First_Name`,`Surname`,`Nicknames`) VALUES (:firstname, :surname, :nicknames); ";
Насколько мне известно, вы не можете вставлять в 2 таблицы с одним запросом mySQL. Вместо этого вы должны использовать два разных запроса.
Проблема с SQL, я не верю, что это допустимый синтаксис. В этом случае вам нужна транзакция.