3

可能重复:
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 个表中,但是我的页面没有呈现并且没有源代码输出?任何人都可以看看我在哪里出错了吗?

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();
}
4

3 回答 3

8

那不是有效的 SQL;你需要分开做。也许:

$sql = "
    INSERT INTO `directory`(`First_Name`,`Surname`,`Nicknames`) VALUES (:firstname, :surname, :nicknames);
    INSERT INTO `nicknames`(`First_Name`,`Surname`,`Nicknames`) VALUES (:firstname, :surname, :nicknames);
";
于 2012-12-27T18:12:57.957 回答
1

据我所知,您不能使用一个 mySQL 查询插入 2 个表。相反,您应该使用两个不同的查询。

附录 在我职业生涯的后期查看这个答案,我有两个补充:

  1. 您可能可以使用子查询进行两次插入,但您不应该这样做。您应该使用单独的查询和事务。交易很重要,更多的开发者应该使用它们。

  2. 看看 OP 试图完成什么,这可能是一个最好在存储过程中完成的操作。

于 2012-12-27T18:13:31.700 回答
0

问题出在 SQL 上,我认为它不是有效的语法。我认为在这种情况下您需要进行交易。

于 2012-12-27T18:14:03.087 回答