You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP+MySQL8创建数据库和表时出现语法错误如何解决

问题原因
  • mysqli_query()默认仅支持单次执行单条SQL语句,你修改后的$queryCrTb同时包含了USE user_records;和CREATE TABLE两条SQL,直接传入mysqli_query会触发语法报错。
  • 最初的写法是两条SQL之间没有加分号分隔,也没有切换到新建的数据库就直接建表,所以也会报错。
解决方法

方案1:拆分所有SQL为单条单独执行(更稳妥,推荐)

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

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

// 1. 单独执行建库语句
$queryCrDB = "CREATE DATABASE IF NOT EXISTS user_records;";
if (mysqli_query($connectDB, $queryCrDB)) {
    echo '<div class="alertSuccess"><span>数据库创建成功</span></div>';
} else {
    echo '<div class="alertError"><span>数据库创建失败: <i>' . mysqli_error($connectDB) . '</i></span></div>';
}

// 2. 单独执行切换数据库语句
mysqli_query($connectDB, "USE user_records;");

// 3. 单独执行建表语句
$queryCrTb = "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, $queryCrTb)) {
    echo '<div class="alertSuccess"><span>数据表创建成功</span></div>';
} else {
    echo '<div class="alertError"><span>数据表创建失败: <i>' . mysqli_error($connectDB) . '</i></span></div>';
}
?>

补充说明:建库语句加IF NOT EXISTS是为了避免重复运行代码时,因为数据库已存在触发报错。

方案2:使用mysqli_multi_query()执行多条SQL(适合需要一次性执行多条语句的场景)

如果不想拆分SQL,可以把原来执行$queryCrTb的mysqli_query替换为支持多语句执行的mysqli_multi_query即可:

// 建库逻辑保持不变,建库成功后执行下面的代码
$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_multi_query($connectDB, $queryCrTb)) {
    echo '<div class="alertSuccess"><span>数据表创建成功</span></div>';
} else {
    echo '<div class="alertError"><span>数据表创建失败: <i>' . mysqli_error($connectDB) . '</i></span></div>';
}

内容的提问来源于stack exchange,提问作者Hiếu Vi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:15:04