循环数据库连接

时间:2017-12-09 20:53:12

标签: mysql r

我使用以下方法创建了12个MySQL数据库连接:

<form>
<?php
if ($userid != $followerid) {
    if ($isFollowing) {
       echo '<input type="submit" name="unfollow" value="unfollow", style="width:100%;background-image:url(&quot;none&quot;);background-color:#da052b;color:#fff;padding:16px 32px;margin:0px 0px 6px;border:none;box-shadow:none;text-shadow:none;opacity:0.9;text-transform:uppercase;font-weight:bold;font-size:13px;letter-spacing:0.4px;line-height:1;outline:none>';              
    } else {
        echo '<input type="submit" name="follow" value="Follow", style="width:100%;background-image:url(&quot;none&quot;);background-color:#da052b;color:#fff;padding:16px 32px;margin:0px 0px 6px;border:none;box-shadow:none;text-shadow:none;opacity:0.9;text-transform:uppercase;font-weight:bold;font-size:13px;letter-spacing:0.4px;line-height:1;outline:none>';
    }
}
?>
</form>

我有一个脚本,我想在所有12个数据库上执行相同的查询并循环遍历它们。如何将if (isset($_POST['follow'])) { if ($userid != $followerid) { if (!DB::query('SELECT follower_id FROM followers WHERE user_id=:userid AND follower_id=:followerid', array(':userid'=>$userid, ':followerid'=>$followerid))) { if ($followerid == 6) { DB::query('UPDATE users SET verified=1 WHERE id=:userid', array(':userid'=>$userid)); } DB::query('INSERT INTO followers VALUES (null, :userid, :followerid)', array(':userid'=>$userid, ':followerid'=>$followerid)); } else { echo 'Already following!'; } $isFollowing = True; } } if (isset($_POST['unfollow'])) { if ($userid != $followerid) { if (DB::query('SELECT follower_id FROM followers WHERE user_id=:userid AND follower_id=:followerid', array(':userid'=>$userid, ':followerid'=>$followerid))) { if ($followerid == 6) { DB::query('UPDATE users SET verified=0 WHERE id=:userid', array(':userid'=>$userid)); } DB::query('DELETE FROM followers WHERE user_id=:userid AND follower_id=:followerid', array(':userid'=>$userid, ':followerid'=>$followerid)); } $isFollowing = False; } } if (DB::query('SELECT follower_id FROM followers WHERE user_id=:userid AND follower_id=:followerid', array(':userid'=>$userid, ':followerid'=>$followerid))) { $isFollowing = True; } 个对象成功传递给mydb1 = dbConnect(MySQL(), user='user', password=password, dbname='db',host='domain') mydb2... mydb3... ... mydb12...

dbConnect

给我错误:

  

(函数(classes,fdef,mtable)中的错误:无法找到   用于签名的函数'dbSendQuery'的继承方法   '&#34;字符&#34;,&#34;字符&#34;'

1 个答案:

答案 0 :(得分:0)

您无法将连接对象的文本表示传递给数据库函数。你的电话类似于dbSendQuery("mydb1", "select * from table"),我猜你不会在字面上打字。

最终,您希望处理list个连接,您可以使用

手动形成这些连接
conns <- list(mydb1, mydb2, ...)

但是如果这很困难,或者你想对它进行更多编程,请尝试

conns <- lapply(ls()[grep("mydb",ls())], get)

然后

results <- lapply(conns, function(con) dbSendQuery(con, "select * from ..."))