php - PDO 使用外键创建表

标签 php mysql-error-1064

我在使用带有外键元素的 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 DELETEON UPDATE 参数。

关于php - PDO 使用外键创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27294869/

相关文章:

php - 通过邮政发送的密码安全吗?

mysql - 查询可以作为 SELECT 工作,但不能作为更新工作?

mysql - 无法在mysql表中创建索引

php - MYSQL语法错误1064

php - '第 1 行 MYSQL 错误

sql - 无法创建表 - 错误 1064 (42000) : You have an error in your SQL syntax

php - 如何在 Codeigniter 中使用 includes 和 base 模板?

php - PHP 中 MySQL 的 "Delete row"按钮

php - 删除小数点后两位,不四舍五入

php - 在分页中突出显示当前页面?