【问题标题】:Creating table with the domain name fails使用域名创建表失败
【发布时间】:2016-12-26 20:50:11
【问题描述】:

每当用户提交他/她的域名时,我都会尝试创建一个表。它肯定会是 .com 或 .net 或 .something 问题是我的代码在包含 .anything 时不会创建表 它适用于没有 .something 的名称和字符

$domain=$_POST['domain_name'];//it is dramatainment.com

$table = mysqli_query($connection, "CREATE TABLE $domain (
user_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_name VARCHAR(100) NOT NULL,
user_domain VARCHAR(50) NOT NULL,
user_email VARCHAR(50),
user_password VARCHAR(50),
user_date date
) ");
if(!$table)
{
 die('Could not create table: ' . mysqli_error($connection));
}

creat table 命令有这个限制吗?可以解决吗?

【问题讨论】:

  • 不要相信你总会得到一个好域名,使用prepared statements
  • 您不想将包含此数据的行添加到名为“域”或其他内容的预先存在的表中吗?
  • @tom 我喜欢你的想法。但就我而言,我需要为域名创建的表。谢谢:)

标签: php database mysqli create-table


【解决方案1】:

您可以尝试用下划线替换点。

Here你可以找到表名中允许的字符。

此外,可以使用这种语法进行查询,这会与您的表名冲突:

SELECT * FROM dbname.table_name;

UPDATE:可以使用反引号括起来表名:

$sql = 'CREATE TABLE `$tableName` (
user_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_name VARCHAR(100) NOT NULL,
user_domain VARCHAR(50) NOT NULL,
user_email VARCHAR(50),
user_password VARCHAR(50),
user_date date
)';

【讨论】:

  • 感谢您的回复。有效。你能解释一下反引号有什么不同使查询能够处理带有 .com 的名称吗?
【解决方案2】:

某些特殊字符对于表名等标识符无效。

http://dev.mysql.com/doc/refman/5.7/en/identifiers.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 2019-07-30
    • 2012-04-29
    • 2011-05-09
    • 2016-02-18
    相关资源
    最近更新 更多