gpt4 book ai didi

php - WHMCS MySQL 和另一个 MySQL

转载 作者:行者123 更新时间:2023-11-29 07:06:42 28 4
gpt4 key购买 nike

我们有一个执行这些操作的批处理脚本

  1. 从 WHMCS 数据库中获取数据
  2. 每一行;如果行需要处理
    1. 连接到data指定的外部MySQL数据库(远程服务器)
    2. 获取并处理相关数据
    3. 近距离连接
    4. 更新 WHMCS 数据库
  3. ...

现在,虽然这是微不足道的,但它会在步骤 2.4 的第一行之后中断,因为 WHMCS 没有为其查询指定资源链接,并且建立第二个 mysql 连接会中断默认的 WHMCS 查询。一段简单的代码说明了我的意思:

$result = mysql_query("SELECT * FROM sometable WHERE condition");
while ($row = mysql_fetch_assoc($result)) {
$conn = mysql_connect($row['mysql_host'], $row['mysql_user'], $row['mysql_pass']);
...
mysql_close($conn);

mysql_query("UPDATE sometable SET lastrun=NOW() WHERE id={$row['id']}");
}

在第二次迭代中对 mysql_query 的第二次调用以及对 mysql_fetch_assoc 的调用都将失败。

有没有办法“恢复”之前的连接使其不中断?请不要建议到处使用 $whmcsmysql 资源链接,这不是一个可行的选择,因为我不能修改加密的 WHMCS 源代码来这样做等等。

最佳答案

如果你每次都连接到同一个服务器,将 mysql_connection 和 mysql_close 移到 while block 之外,你不需要为每个查询保持连接和断开连接。

否则,打开一个到 WHMCS 数据库的单独连接(我不知道 WHMCS 是什么),并指定您在调用 mysql_query 时使用的连接。

$WHMCSConn = mysql_connect($user, $host, $pass);

$uniqueResultVariable = mysql_query("SELECT * FROM sometable WHERE condition", $WHMCSConn);
while ($row = mysql_fetch_assoc($uniqueResultVariable)) {
$conn = mysql_connect($row['mysql_host'], $row['mysql_user'], $row['mysql_pass']);
...
mysql_query($someQuery, $conn);
...
mysql_close($conn);

mysql_query("UPDATE sometable SET lastrun=NOW() WHERE id={$row['id']}", $WHMCSConn);
}
mysql_close($WHMCSConn);

此外,我确定迟早会有人在这里留下 PDO/mysqli 讲座。

关于php - WHMCS MySQL 和另一个 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6917110/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com