mysqli alter table rename(到一个新的数据库)

时间:2016-05-14 23:29:09

标签: mysqli

我想将一个表('$ bar')从我的活动数据库'foo'移动到一个存档数据库'foo_archive'。

我这样做:

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

然后:

$conn->query("alter table `foo`.`$bar` RENAME `foo_archive`.`$bar`")

奇怪的是,它有效,但我收到此错误消息:

mysqli_query() expects at least 2 parameters, 1 given

我认为这是因为我连接到数据库'foo'而不是'foo_archive'。

我想知道如何正确执行此操作,以便不会收到错误消息。我也很好奇为什么它在理论上我没有与'foo_archive'连接时起作用。

1 个答案:

答案 0 :(得分:1)

$conn->query("alter table `foo`.`$bar` RENAME `foo_archive`.`$bar`")
     

奇怪的是,它有效,但我收到此错误消息:

mysqli_query() expects at least 2 parameters, 1 given

该代码与错误消息不匹配。只有在调用过程式时,才需要两个参数;您正在使用面向对象的样式,而且只需要一个。

[来自评论]

  

这行不对吗?

if (!mysqli_query($conn->query("alter table foo.$bar RENAME foo_archive.$bar"))){...}
<啊>啊哈,我们走了。

是的,这是错误的 - 您首先调用面向对象样式的方法($conn->query()),然后将该调用的结果作为参数传递给过程样式调用(mysqli_query() )。

您需要执行其中任何一项 - 而不是两者。

由于您已经使用OO样式创建了数据库连接,因此您应该坚持使用它:

if (!$conn->query("alter table foo.$bar RENAME foo_archive.$bar")){...}