我有一个外键元素难度创建与MySQL(PDO)的表,没有外键的表中创建罚款,但没有我得到这个消息: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;
?>
我可以问,你为什么要用PHP代码创建你的表?在您的项目中访问它之前,使用数据库查看器创建它是否更实际? – silkfire 2014-12-04 13:17:11
@silkfire尽管在这种情况下我同意你的观点,但如果处理更复杂的应用程序可能会涉及到“创建临时表”;) – 2014-12-04 13:21:34
@NiettheDarkAbsol绝对如此,对于临时表来说,它肯定是有意义的,但对于可重复使用的表格 - 出于开发者的观点 - 我会发现在GUI中设计和构建表格更容易:) – silkfire 2014-12-04 13:24:28