我正在尝试创建一个平台,可以从一个php创建表格,命名为提交者类型的变量。我这里的代码导致了一个mysql语法错误。我相信这是一个括号放置的问题,但是我尝试过的每一种组合都不成功,有人能弄明白吗?我去掉了错误的括号,以减少混淆。
<?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>
发布于 2012-07-27 23:57:28
在SQL文本中的表名两边使用反引号:
mysql_query("CREATE TABLE `$name`(
反引号是MySQL中标识符的默认分隔符。(注意:可以启用其他分隔符,但您并不真的想这样做。)
如果标识符是保留字、包含空格等,则反标记是必需的。(在许多情况下可以省略反标记,但在不需要的时候使用它们并不是错误的。基本上,将规则视为“总是在标识符两边使用反引号”,并在方便的时候省略它们,并且您确定它们不是必需的。)
发布于 2012-07-27 23:41:58
这可能会起作用:
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!";
}
?>
我已经测试过了,没有问题...它创建具有此结构的表。
发布于 2012-07-27 23:42:04
更改为:mysql_query("CREATE TABLE ".$name."(
https://stackoverflow.com/questions/11691090
复制相似问题