我需要从这两个不同的数据库中获取数据并将详细信息传递到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);
答案 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和网址。