簡體   English   中英

MySQL 創建新表時出現語法錯誤

[英]MySQL syntax error while creating new table

我已經嘗試了幾個小時來解決這個問題,我在這里搜索了答案,但仍然無法弄清楚我的代碼有什么問題。 我正在嘗試使用 PHP 和 MySQL 創建一個新數據庫和一個表:

<?php
$hostname = 'localhost';
$username = 'root';
$password = '';

$connectDB = mysqli_connect($hostname, $username, $password);
if (!$connectDB) {
    die('Connection failed: ' . mysqli_connect_error());
}

$query = 'CREATE DATABASE user_records
    CREATE TABLE records_list (
    id INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(30) NOT NULL UNIQUE,
    userpass VARCHAR(30) NOT NULL)';

if (mysqli_query($connectDB, $query)) {
    echo '<div class="alertSuccess"><span>Query successful</span></div>';
} else {
    echo '<div class="alertError"><span>Query failed: <i>' . mysqli_error($connectDB) . '</i></span></div>';
}

?>

這是錯誤:

Query failed: 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 'CREATE TABLE records_list ( id INT(5) NOT NULL PRIMARY KEY AUTO_INCREME' at line 2

我正在使用 VSCode 和 XAMPP,最新的 MySQL 8。

更新:我按照@Phil 和@Mark Walker 的建議編輯了我的代碼:

$queryCrDB = "CREATE DATABASE user_records;";
    
$queryCrTb = "USE user_records;
CREATE TABLE records_list (
id INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(30) NOT NULL UNIQUE,
userpass VARCHAR(30) NOT NULL);";

if (mysqli_query($connectDB, $queryCrDB)) {
    echo '<div class="alertSuccess"><span>Query successful</span></div>';
} else {
    echo '<div class="alertError"><span>Query failed: <i>' . mysqli_error($connectDB) . '</i></span></div>';
}
if (mysqli_query($connectDB, $queryCrTb)) {
    echo '<div class="alertSuccess"><span>Query successful</span></div>';
} else {
    echo '<div class="alertError"><span>Query failed: <i>' . mysqli_error($connectDB) . '</i></span></div>';

但它仍然在 CREATE TABLE 行給我語法錯誤。

您需要在創建表之前運行創建數據庫。 下面的查詢應該可以工作,注意分號關閉各個命令和“使用數據庫”以切換到新創建的數據庫。

CREATE DATABASE user_records;
USE user_records;
CREATE TABLE records_list (
    id INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(30) NOT NULL UNIQUE,
    userpass VARCHAR(30) NOT NULL);

基於 mysql 8 doc ,它應該是:

id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY 

不是

id INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT

PRIMARY KEYAUTO_INCREMENT顛倒

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM