我有逻辑工作(直接在phpmyadmin中输入时),但不知道如何将其转换为php。我将非常感谢这个翻译到php语句的帮助。PHP,MySQL和两个数据库 - 从第一个数据库中的第二个数据库表中更新某些行的不同模式
工作mysql逻辑列出了散列符号之间(我已经找出了所需的其他php语句)。为了澄清逻辑/过程,我在db2中有一个表,为某些id保存一组“平均值”。我想将这些平均值移到db1表中等效的“平均”字段。匹配必须通过两个表共用的id字段完成,但db2没有针对db1中列出的每个id的条目。
<?php
$dbhost = 'localhost';
$dbuser1 = 'dbuser1';
$dbpass1 = 'dbpass1';
$dbuser2 = 'dbuser2';
$dbpass2 = 'dbpass2';
$conn1 = mysql_connect($dbhost, $dbuser1, $dbpass1);
$conn2 = mysql_connect($dbhost, $dbuser2, $dbpass2, true);
if(! $conn1 || ! $conn2)
{
die('Could not connect to db1 or db2: ' . mysql_error());
}
mysql_select_db('db1', $conn1);
mysql_select_db('db2', $conn2);
#####
update db1.gfields, db2.averages
set db1.gfields.ratingavg = db2.averages.average
where db1.gfields.id = db2.averages.id;
this is an after-fix edit to show the code that solved the issue (initially provided below by KyleMassacre & updated slightly. Works with two connections, didn't try with one.)
$q = mysql_query("select * from averages", $conn2);
while ($r = mysql_fetch_array($q)) {
$u = mysql_query("update gfields set ratingavg = " . $r["average"] . " where id = " . $r["id"], $conn1);
#####
mysql_close($conn1);
mysql_close($conn2);
?>
'mysql_ *'已被弃用,并且已经有一段时间了。看看mysqli或PDO。 – cHao
除此之外,你可能会有一段时间试图获得两个不同的连接来配合一个查询。您最好使用一个或另一个连接,并确保连接的用户可以访问其他数据库。 – cHao
我已经收集到了,但是我正在使用的脚本是基于折旧的PHP版本加上我不确定它是否真的影响了我的问题的核心方面(即如何在php中的标记之间表示mysql逻辑)。我认为打开第一个数据库的连接并将结果存储在数组中 - 然后访问第二个数据库/更新它可能是要走的路,但我不清楚如何在php中执行此操作。 – zww