我在使用带有外键元素的 MySQL (PDO) 创建表时遇到困难,没有外键表创建正常,但没有我收到此消息:
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有误;
我曾尝试寻找解决方案并调整代码,但似乎一直遇到这个问题。有解决办法还是我是个笨蛋?
<?php
$servername = "localhost";
$username = "root";
$password = NULL;
$dbname = "testapplciants";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//sql to create the activity registered table
$sql = "CREATE TABLE Activity_Register (
Activity_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
participant_id INT(6) FOREIGN KEY (participant_id) REFERENCES participants,
entry_number INT(2),
recorded_result INT(6),
entry_date TIMESTAMP
)";
// use exec() because no results are returned
$conn->exec($sql);
echo "Table Activity Recorder created successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
最佳答案
PRIMARY KEY
在列的定义中是 separate 定义的简写 PRIMARY KEY (`column_name`)
FOREIGN KEY
没有这样的速记。
`participant_id` INT(6),
FOREIGN KEY (`participant_id`) REFERENCES `participants` (`id???`)
请注意,您忽略了引用表的列名,您可能还应该有 ON DELETE
和 ON UPDATE
参数。
关于php - PDO 使用外键创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27294869/