Я имею трудность при создании таблицы с MySQL (ПДО) с внешним ключом элементом, без внешнего ключа таблицы создает хорошо, но не я получаю сообщение:PDO создает таблицу с внешним ключом
SQLSTATE [42000]: Синтаксическая ошибка или нарушение доступа: 1064 У вас есть ошибка в синтаксисе SQL;
Я попытался найти решение и адаптировать код, но, похоже, все время сталкивался с этим. Есть ли исправление, или я являюсь wally?
<?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
@silkfire Хотя я согласен с вашими чувствами в этом случае, полезно знать такие вещи, если вы имеете дело с более сложными приложениями, которые могут включать 'CREATE TEMPORARY TABLE';) –
@NiettheDarkAbsol Абсолютно так, для временных таблиц это определенно имеет смысл , но для таблиц многократного использования - с точки зрения разработчика - мне было бы намного легче проектировать и строить таблицу в графическом интерфейсе :) – silkfire