Невозможно получить доступ к нескольким столбцам из нескольких внешних баз данных для циклов - PullRequest
0 голосов
/ 15 мая 2018

Мне дали проект взять много кода php5 и обновить его до php7 (в основном меняя все функции mysql_ на mysqli_).В частности, для этого файла мне нужно отобразить разные столбцы информации из 3 разных баз данных.Если бы это был только один запрос, то я мог бы поместить свой html в цикл, но я получаю информацию по нескольким БД.

При проверке моего 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 голосов
/ 15 мая 2018

После изменения кода на это:

$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 базе данных записи отображаются корректно.

...