我想将一个表('$ 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'连接时起作用。
答案 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")){...}