无法从for循环外的多个数据库访问多个列

时间:2018-05-15 19:02:45

标签: mysqli php-7

我获得了一个项目,可以获取大量的php5代码并将其更新为php7(主要是将所有mysql_函数更改为mysqli_)。特别是在这个文件中,我需要显示来自3个不同数据库的不同信息列。如果这只是一个查询,那么我可以将我的html放在一个循环中,但我在几个DB中获取信息。

在检查我的apache error.log时,我不断得到"未定义的变量"对于html中的每个变量。

如何正确获取这3个查询的结果,以便稍后在页面上使用?

注意:我的配置文件是正确的,因为所有其他页面都可以访问这些数据库。

$Master_Status_Query = "show master status";
$NS10_Status_Query = "show slave status";
$NS11_Status_Query = "show slave status";

$master_result = $master_conn->query($master_conn, $Master_Status_Query);
$ns10_result = $ns10_conn->query($ns10_conn, $NS10_Status_Query);
$ns11_result = $ns11_conn->query($ns11_conn, $NS11_Status_Query);


if($master_result === FALSE) {
    print '<p class="input--error">Something broke: ' . mysqli_error($master_conn);
} else {
    foreach($master_result as $master_row) {
        $Master_Log_Name = $master_row['File'];
                $Master_Log_Position = $master_row['Position'];
    }
}
if($ns10_result === FALSE) {
    print '<p class="input--error">Something broke: '. mysqli_error($ns10_conn);
} else {
    foreach($ns10_result as $ns10_row) {
        $NS10_Log_Name = $ns10_row['Master_Log_File'];
        $NS10_Log_Position = $ns10_row['Read_Master_Log_Position'];
        $NS10_Seconds_Behind_Master = $ns10_row['Seconds_Behind_Master'];
    }
}
if($ns11_result === FALSE) {
    print '<p class="input--error">Something broke: '.mysqli_error($ns11_conn);
} else {
    foreach($ns11_result as $ns11_row) {
        $NS11_Log_Name = $ns11_row['Master_Log_File'];
        $NS11_Log_Position = $ns11_row['Read_Master_Log_Position'];
        $NS11_Seconds_Behind_Master = $ns11_row['Seconds_Behind_Master'];
    }
}

mysqli_close($master_conn);
mysqli_close($ns10_conn);
mysqli_close($ns11_conn);


echo "<table id=\"replication_table\">";
echo "<tr><td colspan=\"3\">&nbsp;</td></tr>";
echo "<tr><td colspan=\"3\" align=\"center\">Server Replication Status</td></tr>";
echo "<tr><td colspan=\"3\">&nbsp;</td></tr>";
echo "<tr><td colspan=\"3\">&nbsp;</td></tr>";
echo "<tr bgcolor=\"darkblue\"><td width=\"30%\"align=\"left\"><font color=\"white\">Server</font></td><td width=\"30%\"align=\"left\"><font color=\"white\">Log File</font></td><td colspan=\"3\" width=\"30%\"align=\"left\"><font color=\"white\">Log Position</font></td></tr>";
echo "<tr><td align=\"left\">Master</td><td align=\"left\">$Master_Log_Name</td><td align=\"left\">$Master_Log_Position</td><td align=\"left\">&nbsp;                     </td><td align=\"left\">&nbsp; </td></tr>";
echo "<tr><td align=\"left\">NS10  </td><td align=\"left\">$NS10_Log_Name  </td><td align=\"left\">$NS10_Log_Position  </td><td align=\"left\">$NS10_Seconds_Behind_Master</td><td align=\"left\">&nbsp; </td></tr>";
echo "<tr><td align=\"left\">NS11  </td><td align=\"left\">$NS11_Log_Name  </td><td align=\"left\">$NS11_Log_Position  </td><td align=\"left\">$NS11_Seconds_Behind_Master</td><td align=\"left\">&nbsp; </td></tr>";
echo "<tr><td align=\"left\"><button class='btn btn-default' type=\"button\" onClick=\"myRef = location.replace('db-integrity-check.php','mywin');\">Back To Menu</button></td></tr></br>";
echo "</table>";

1 个答案:

答案 0 :(得分:0)

将代码更改为:

$Master_Status_Query = "show master status";
$NS10_Status_Query = "show slave status";
$NS11_Status_Query = "show slave status";

$master_result = mysqli_query($master_conn, "show master status");
$ns10_result = mysqli_query($ns10_conn, "show slave status");
$ns11_result = mysqli_query($ns11_conn, "show slave status");

$master_row = $master_result->fetch_array();
$ns10_row = $ns10_result->fetch_array();
$ns11_row = $ns11_result->fetch_array();

$Master_Log_Name = $master_row['File'];
$Master_Log_Position = $master_row['Position'];

$NS10_Log_Name = $ns10_row['Master_Log_File'];
$NS10_Log_Position = $ns10_row['Read_Master_Log_Pos'];
$NS10_Seconds_Behind_Master = $ns10_row['Seconds_Behind_Master'];

$NS11_Log_Name = $ns11_row['Master_Log_File'];
$NS11_Log_Position = $ns11_row['Read_Master_Log_Pos'];
$NS11_Seconds_Behind_Master = $ns11_row['Seconds_Behind_Master'];



mysqli_close($master_conn);
mysqli_close($ns10_conn);
mysqli_close($ns11_conn);

我收到了拒绝访问错误。在向数据库授予SUPER权限后,记录显示正确。