Блок кода для включения another.php
никогда не выполняется, потому что запрос SHOW DATABASES не выполняется.
Я проверил ваш код и добавил несколько сообщений об ошибках:
if ($result = $conn->query("SHOW DATABASES LIKE 'mydatabase'")) {
if($result->num_rows == 0) {
include("another.php");
}
} else {
echo "Error: {$conn->error}\n";
}
Я получил это:
Ошибка: команды не синхронизированы; Вы не можете запустить эту команду сейчас
Вы не можете запустить другой SQL-запрос, в то время как у того, который вы уже выполнили, все еще есть результаты для выборки. Даже если вы использовали store_result()
для получения набора результатов, это только текущий набор результатов. Вы использовали mulit_query()
, который производит несколько наборов результатов. Вам нужно обработать все наборы результатов до конца цикла next_result()
, прежде чем вы сможете начать новый запрос.
Еще один урок заключается в том, что вы должны всегда проверять и сообщать об ошибках после попытки query()
или multi_query()
или prepare()
или execute()
.
Вот пример: вам нужно подождать, пока последний результат не будет обработан, прежде чем вы сможете выполнить другой запрос. Это означает после цикла на $conn->next_result()
.
if(isset($_POST["button_two"])){
$username = $_POST['username'];
$password = $_POST['password'];
if($conn->multi_query("SELECT id FROM users WHERE username = '$username' OR password = '$password'"))
{
do {
if ($result = $conn->store_result()) {
while ($row = $result->fetch_row()) {
// DISPLAY RESULTS FROM QUERY
}
}
$result->free();
} while ($conn->next_result());
// CAN'T START ANOTHER QUERY UNTIL AFTER THE NEXT_RESULT LOOP IS DONE
if ($result = $conn->query("SHOW DATABASES LIKE 'mydatabase'")) {
if($result->num_rows == 0) {
include("another.php");
}
}
}