首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建具有可变表名的mysql表

创建具有可变表名的mysql表
EN

Stack Overflow用户
提问于 2012-07-27 23:35:57
回答 5查看 1.5K关注 0票数 0

我正在尝试创建一个平台,可以从一个php创建表格,命名为提交者类型的变量。我这里的代码导致了一个mysql语法错误。我相信这是一个括号放置的问题,但是我尝试过的每一种组合都不成功,有人能弄明白吗?我去掉了错误的括号,以减少混淆。

代码语言:javascript
运行
复制
    <?php

if (isset($_POST['submit']))
{ 
$name=$_POST['name'];

mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());


mysql_query("CREATE TABLE '$name'(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
name VARCHAR(30),
age INT)")
or die(mysql_error());  

echo "Table Created!";

?>   <html><form method='POST'>..........</html>
EN

回答 5

Stack Overflow用户

发布于 2012-07-27 23:57:28

在SQL文本中的表名两边使用反引号:

代码语言:javascript
运行
复制
mysql_query("CREATE TABLE `$name`(

反引号是MySQL中标识符的默认分隔符。(注意:可以启用其他分隔符,但您并不真的想这样做。)

如果标识符是保留字、包含空格等,则反标记是必需的。(在许多情况下可以省略反标记,但在不需要的时候使用它们并不是错误的。基本上,将规则视为“总是在标识符两边使用反引号”,并在方便的时候省略它们,并且您确定它们不是必需的。)

票数 2
EN

Stack Overflow用户

发布于 2012-07-27 23:41:58

这可能会起作用:

代码语言:javascript
运行
复制
if (isset($_POST['submit']))
{ 
$name=$_POST['name'];

mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());


mysql_query("CREATE TABLE ".$name."(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
name VARCHAR(30),
age INT)")
or die(mysql_error());  

echo "Table Created!";
}
?>

我已经测试过了,没有问题...它创建具有此结构的表。

票数 1
EN

Stack Overflow用户

发布于 2012-07-27 23:42:04

更改为:mysql_query("CREATE TABLE ".$name."(

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11691090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档