我正在通过CRON运行一些小的更新并使用PHP执行它们。
现在我想从DB1中选择一些内容并将其插入DB2
我的问题是,这两个数据库s are on the same Server but with 2 different Users and it
无法为两个数据库提供1个用户权限。
所以我知道这适用于一个用户和dbconnect:
insert into db1.tbl1(data1,data2) values (select data2, data1 from db2.tbl2)
如何在一个循环中使用2 db连接?
由于
答案 0 :(得分:0)
如果你使用pdo。你宣布2个不同的连接。
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass)
$dbh2 = new PDO('mysql:host=localhost;dbname=test', $user2, $pass)
然后你这样做
$query = $dbh->prepare(select statement);
$query->execute();
$data = $query->fetchAll(); // you get array of data
$query = $dbh2->prepare(insert statement);
$query->execute()
答案 1 :(得分:0)
你可以像这样创建两个连接文件
<?PHP
function connect(){
$servername = "localhost";
$username = "user";
$password = "psw";
$database = "database";
$conn = new mysqli($servername, $username, $password, $database);
if(mysqli_connect_errno()){
echo "Error conectando a la base de datos: " . mysqli_connect_error();
exit();
}
else{
$conn->query("SET NAMES 'utf8'");
return $conn;
}
}
function disconnect($connection){
$disconnect = mysqli_close($connection);
}
?>
并在你的php文件中,像这样
require("connection.php");
$connection=connect();
require("connection2.php");
$connection2=connect2();
显然在你的connection2.php你的功能名为connect2();在循环中,您可以使用两个连接
$query="insert into db1.tbl1(data1,data2) values (select data2, data1 from db2.tbl2)";
$messageResult = "Good";
$band = true;
if(!($connection -> query($query))){
$messageResult = "Error";
$band = false;
}
或..
$query="insert into db1.tbl1(data1,data2) values (select data2, data1 from db2.tbl2)";
$messageResult = "Good";
$band = true;
if(!($connection2 -> query($query))){
$messageResult = "Error";
$band = false;
}
答案 2 :(得分:0)
在两个不同的变量中创建2 dB连接并使其工作....在一个变量中获取第一个db的值,然后将该变量转储到第二个数据库....或者您可以使用另一个dB或缓存dB,如redis存储一次临时基地。