我获得了一个项目,可以获取大量的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\"> </td></tr>";
echo "<tr><td colspan=\"3\" align=\"center\">Server Replication Status</td></tr>";
echo "<tr><td colspan=\"3\"> </td></tr>";
echo "<tr><td colspan=\"3\"> </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\"> </td><td align=\"left\"> </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\"> </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\"> </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>";
答案 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权限后,记录显示正确。