Поэтому у меня есть этот скрипт, чтобы создать таблицу в моей базе данных. Я скопировал это из старого сценария, который я сделал, который работает прямо сейчас. Почему этот человек не работает? Кто угодно?
Ошибка, которую я получаю: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near "'= varchar (20) NOT NULL, column_two = int NOT NULL auto_increment, column_thre' at line 2"
<?php include("server_connect.php"); mysql_select_db("assignment5"); $create = "CREATE TABLE tbltable ( column_one = varchar (20) NOT NULL, column_two = int NOT NULL auto_increment, column_three = int NOT NULL, column_four = varchar (15) NOT NULL, column_five = year, PRIMARY KEY = (column_one) )"; $results = mysql_query($create) or die (mysql_error()); echo "The tables have been created"; ?>
в<?php include("server_connect.php"); mysql_select_db("assignment5"); $create = "CREATE TABLE tbltable ( column_one = varchar (20) NOT NULL, column_two = int NOT NULL auto_increment, column_three = int NOT NULL, column_four = varchar (15) NOT NULL, column_five = year, PRIMARY KEY = (column_one) )"; $results = mysql_query($create) or die (mysql_error()); echo "The tables have been created"; ?>
Удалить все =
как уже было предложено:
$create = "CREATE TABLE tbltable ( column_one varchar (20) NOT NULL, column_two int NOT NULL auto_increment PRIMARY KEY, column_three int NOT NULL, column_four varchar (15) NOT NULL, column_five year )";
Каждая таблица должна иметь первичный ключ, и вы должны указать столбец AUTO_INCREMENT
как PRIMARY KEY
. В этом случае столбец AUTO_INCREMENT
равен column_two
и я установил его как PRIMARY KEY
.
Процедура MySQLi
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } // sql to create table $sql = "CREATE TABLE MyGuests ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP )"; if (mysqli_query($conn, $sql)) { echo "Table MyGuests created successfully"; } else { echo "Error creating table: " . mysqli_error($conn); } mysqli_close($conn); ?>
(ПДО)
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDBPDO"; 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 table $sql = "CREATE TABLE MyGuests ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP )"; // use exec() because no results are returned $conn->exec($sql); echo "Table MyGuests created successfully"; } catch(PDOException $e) { echo $sql . "<br>" . $e->getMessage(); } $conn = null; ?>
Решение состоит в том, чтобы назначить все привилегии для пользователя BD, например:
GRANT ALL PRIVILEGES ON *. * TO 'user_name' @ 'localhost';