使用SQL语句重命名MySQL表

5
我想使用SQL语句重命名一个已存在的表格:
我已经尝试过以下几种方法:
  1. mysql_query("RENAME '$renameFolder' TO '$newName'");
  2. mysql_query("ALTER TABLE '$renameFolder' RENAME TO '$newName'");
  3. mysql_query("RENAME TABLE '$renameFolder' TO '$newName'");
但是这三个语句无论哪一个都会得到相同的错误信息:

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax"

请告诉我我做错了什么!

尝试: "RENAME TABLE $renameFolder TO $newName" - acanimal
警告:mysql_query是过时的接口,在将来的PHP版本中将被移除,不应在新应用程序中使用。现代替代品如PDO并不难学,如果您是PHP的新手,可以参考PHP权威指南了解最佳实践。 - tadman
7个回答

6

尝试使用反引号代替,例如:

mysql_query( "RENAME TABLE `" . $renameFolder . "` TO `" . $newname . "`" );

我认为应该是这样的。从逻辑上讲,我们必须在 ` 而不是 ' 之间包含表名。 - artragis
我在自己的设置中尝试了一下,去掉引号就解决了。我怀疑你的表名中有非字母数字字符。像atragis所说,尝试使用 ` 引号。 - Overv
你的意思是这样吗:mysql_query("RENAME " . '$renameFolder' . " TO ". '$newName')? - user1216858

2

重命名MySQL表的查询语句是
RENAME TABLE old_name TO new_name


2

来自mySQLi的期望答案:

$db=mysqli_connect("localhost","root","password","database");
$oldFolder="old_table_name";
$newname="new_table_name";
mysqli_query($db,"RENAME TABLE `" . $oldFolder . "` TO `" . $newname . "`");

Good Luck!


1

你已经成功连接到服务器了吗?

你选择了表所在的数据库吗?

如果是的话,你应该能够运行这个命令:

mysql_query("ALTER TABLE table_name RENAME TO new_table_name");

是的,表格已经存在。我已经使用了这个语句,但对我没有起作用。 - user1216858
然后您必须在表名周围放置``,或者像Overv建议的那样将字符串与变量连接起来。 - Liftoff

1
RENAME TABLE `jshop`.`mob_apple` TO `jshop`.`item_mobile`;

1

使用 mysqli 面向对象接口,您可以使用以下代码来重命名您的表:

 $sql = "RENAME TABLE OldName TO NewName";
//if the query is successful
if ($conn->query($sql) === TRUE) {
echo "Table  renamed successfully";
}
//If something goes wrong

 else {
 echo "Error creating table: " . $conn->error;
 }

0
尝试将引号去掉,这样最终的查询看起来会像这样:
mysql_query ("ALTER TABLE foo RENAME TO bar");

希望这能有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接