从两个不同的MYSQL数据库中选择

时间:2016-06-24 13:29:15

标签: php mysql

我需要从这两个不同的数据库中获取数据并将详细信息传递到url中。公司数据库和表safdetail中的值经常更新,但worker数据库中的详细信息不会更改。我想不出有效地将两者结合在一起的方法。任何人吗?

//Connect to company database
 $sql = "SELECT mobilenumber, amount FROM safdetail WHERE notification = 0";
 $result = mysqli_query($conn, $sql);
 $resultarr = mysqli_fetch_assoc($result); // fetch data



     $mobile = $resultarr['mobilenumber'];
     $amount = $resultarr['amount'];


 //connect to workers database
  $sq = "SELECT shortCode, spId, password, commandID, serviceID  FROM workers WHERE notification = 0";

 $result1 = mysqli_query($conn, $sq);
 $resultarr1 = mysqli_fetch_assoc($result1); // fetch data

    $shortCode = $resultarr1['shortCode'];
    $spId = $resultarr1['spId'];
    $password = $resultarr1['password'];
    $commandID = $resultarr1['commandID']; 
    $serviceID = $resultarr1['shortCode'];  



                 $serviceArguments = array(
                            "serviceID" => $serviceID,
                            "shortCode" => $shortCode,
                            "spId" => $spId,
                            "password" => $password,
                            "mobilenumber" => $mobile,
                            "amount" => $amount,
                            "commandID" => $commandID
                            );

            $client = new SoapClient("http://32.37.12.12:8080/B2DSimulator/Simulator?wsdl");

            $result = $client->process($serviceArguments);

1 个答案:

答案 0 :(得分:0)

为了访问不同数据库中的表,只需在表名之前添加数据库前缀,如下所示:

SELECT  count(*) ct,name,age FROM research.all_data  group by name having count(*) >100 order by ct desc

如果您需要对上述代码提供更具体的答案,请告诉我,我会再深入研究您的具体问题。

编辑:阅读完代码后,我认为这已经是实现目标的最快方法。对于您的特定情况,您可能希望使用memcached将工作表缓存更长时间。您还应确保在将这两个表用于查询时对两个表的通知字段编制索引。这将大大提高您对大表的查询速度。

根据您的桌子有多大以及查询需要多长时间,还有其他可能的改进。如果您使用InnoDB,您可能需要查看使用事务。我不知道这些查询需要多长时间或性能问题到底是什么(这个php文件经常被调用,你想避免一次又一次地执行这些查询,或者做这些查询需要很长时间才能得到结果? )

旁注:您可能希望在代码中编辑IP和网址。