Php PDO使用外键创建表
我很难用带有外键元素的MySQL(PDO)创建一个表,如果没有外键,表会创建得很好,但是如果没有外键,我会收到以下消息: SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误 我曾尝试寻找解决方案并修改代码,但似乎一直遇到这种情况。是有办法还是我是一个沃利Php PDO使用外键创建表,php,mysql-error-1064,Php,Mysql Error 1064,我很难用带有外键元素的MySQL(PDO)创建一个表,如果没有外键,表会创建得很好,但是如果没有外键,我会收到以下消息: SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误 我曾尝试寻找解决方案并修改代码,但似乎一直遇到这种情况。是有办法还是我是一个沃利 <?php $servername = "localhost"; $username = "root"; $password = NULL; $dbname = "testapplciants"; try
<?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;
?>
列定义中的主键
是单独定义的缩写,该定义为主键(`column\u name`)
外键
没有这样的速记
`participant_id` INT(6),
FOREIGN KEY (`participant_id`) REFERENCES `participants` (`id???`)
请注意,您忽略了引用表的列名,并且您可能还应该在DELETE上使用
参数,在UPDATE
上使用参数。我可以问一下,您为什么尝试使用PHP代码创建表?在您的项目中访问它之前,使用数据库查看器创建它不是更实际吗?@silkfire虽然我同意您在这种情况下的看法,但如果处理可能涉及创建临时表;)的更复杂的应用程序,了解这些事情可能会很有用@NiettheDarkAbsol绝对是这样,对于临时表来说,这绝对是有意义的,但是对于可重用表——从开发人员的角度来看——我发现在GUI中设计和构造表要容易得多:)@silkfire Heh,我有一个控制台,我只是直接在其中键入SQL——似乎找不到一个可以实现我想要的一切的GUI。Adminer相当不错,但似乎只是半心半意地做外键-我必须创建表,然后编辑键以获得我想要的参数。。。啊,好吧,谢谢你,黑暗的绝对,我试过了,现在发现了另一个错误。我是一个新手开发人员,所以要有耐心:-)这次的错误是:SQLSTATE[HY000]:一般错误:1215无法添加外键constraintHi,可能这不是问题所在,但仍然提到,您要添加为外键的列必须被索引。