【问题标题】:Check the manual that corresponds to MariaDB server version for the right syntax to use near '.tcet@gmail.com' at line 1"查看与 MariaDB 服务器版本相对应的手册,了解在第 1 行的“.tcet@gmail.com”附近使用的正确语法”
【发布时间】:2019-06-26 07:10:13
【问题描述】:

在这里,我尝试使用已输入的每个电子邮件 ID 的名称创建单独的数据库。我希望数据库名称是用户输入的电子邮件 ID。

错误:

查看与 MariaDB 服务器版本相对应的手册 在第 1 行的“.tcet@gmail.com”附近使用正确的语法

<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die($conn->connect_error);
} 

$email = $conn->query("SELECT username FROM `register` ORDER BY ID DESC 
LIMIT 1");
$result = $email->fetch_assoc();
$final = $result['username'];

$sql = "CREATE DATABASE $final";

if ($conn->query($sql) === TRUE) {
   echo "Database created successfully";
} else {
    echo $conn->error;
}

$conn->close();
?>

在这里,在上面的代码中,我正在获取用户输入的电子邮件 ID,并尝试使用已获取的相同电子邮件 ID 的名称创建数据库。但是我收到了上述错误。

【问题讨论】:

  • 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“miths.tcet@gmail.com”附近使用正确的语法。它现在显示此错误。 KIKO 软件
  • 对不起,我没注意。数据库的名称必须遵守某些规则。见:Schema Object Names。所以点和@ 是不允许的。
  • 我可以说为每个用户创建一个数据库非常不寻常吗?你可能不应该那样做。

标签: php


【解决方案1】:

带有.@ 的数据库名称在MariaDB 中是合法的(但应避免使用,因为它们很难处理)。在您的第一个 SQL 查询中,您已经使用了 ` 字符(包含表名),但似乎并没有理解它的目的。长话短说:

CREATE DATABASE a.b@c

不会工作,但是

CREATE DATABASE `a.b@c`

会的。

https://mariadb.com/kb/en/library/identifier-names/https://dev.mysql.com/doc/refman/8.0/en/glossary.html#glos_backticks

【讨论】:

    猜你喜欢
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 2015-09-23
    • 2019-05-31
    相关资源
    最近更新 更多