我在创建一个带有外键元素的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;
?> 

#1楼 票数:2

PRIMARY KEY在列的定义是简写一个单独的定义,读取PRIMARY KEY (`column_name`)

FOREIGN KEY没有这样的速记。

`participant_id` INT(6),
FOREIGN KEY (`participant_id`) REFERENCES `participants` (`id???`)

请注意,您忽略了引用表的列名,您也应该也有ON DELETEON UPDATE参数。

  ask by Gareth translate from so

未解决问题?本站智能推荐:

2回复

php中mysql的左连接/外键问题

我有表队列和请求。 队列的reqID是请求的reqID的外键。 两个表都有vanID 我正在尝试将所有内容放入队列中,以及队列引用的每个请求的所有信息。 这是我的查询。 这是我得到的错误。 1064:您的SQL语法错误; 检查与您的MySQL服务器版本相对应的手册
2回复

如何使用php和mysql从查询创建表

我正在尝试创建一个文件,该文件将从查询中删除并重新创建表。 我一直收到语法错误。 自从我在mysql工作并且没有看到错误以来已经有一段时间了。 另一组眼睛会很棒! 我得到的错误是: 您的号码无法检索。 很抱歉给您带来不便。 您的SQL语法有错误; 查看与MyS
1回复

无法在具有PDO的UPDATE查询中使用JOIN

我已经尝试了所有可以想到的方法,并且根据我的研究,在UPDATE查询中使用了JOIN语句。 我正在使用PDO,以[1, 1]作为参数调用execute 。 但是,这样做时出现以下错误: 我尝试从发现的内容中尽一切可能重新排列查询,包括: 添加FROM子句 重新
1回复

插入表或更新php中重复的键错误

我在查询语句中的代码出现语法错误,但我不知道为什么。 我的表列有id, token, gpslat, gpslong 。 如果令牌名称相同,我想更新记录,否则插入。 我出错了。 以下是我的PHP代码。 我得到的错误是: Error: INSERT INTO whosonline
3回复

Mysql 错误 #1064 创建表

我正在尝试将 sql 文件上传到我的 phpmyadmin。 我有以下错误 这是错误的代码: 我不确定出了什么问题,似乎一切正常。
1回复

#1064-您的SQL语法有误; 创建表时

我对MySQL完全陌生,可以使用尽可能多的细节。 #1064-您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1371行的“ D5F9F589C9C”附近使用 / *!40000 ALTER TABLE accountnotes D
1回复

PDO准备好的语句错误1064

我在尝试将数据插入表中时遇到此错误。 Array([0] => 42000 [1] => 1064 [2] =>您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以获取在'username , password , firstname , lastnam
2回复

更新数据库动态php中的表

我正在尝试使用php更新数据库中的表。 我有一个函数可以调用数据库中所有设置为visible(visible = 1)的页面,并在网站上列出它们。 每个页面都有一个单选按钮,如果单选按钮设置为yes(值= 1),则javascript会调用一个下拉选项。 我希望用户能够选择他们的选项,并且