Я учусь использовать MySQL с PHP, и во время практики я попытался создать простое веб-приложение, используя Core PHP и MySQL. Это кратко изложено ниже:
- Он имеет довольно простую html-страницу, где имя пользователя (uname) и пароль (pword) для MySQL вводятся в форму и отправляются методом POST в PHP-скрипт с именем PHP1.php
-PHP1 подключается к MySQL. Код (пропуская теги PHP):
//Get input username and password
$username = $_POST['uname'];
$password = $_POST['pword'];
//Server information
$server = "localhost";
//Connect
$conn = new mysqli($server, $username, $password);
//Check success/failure
if ($conn -> connect_error)
{
die("Connection failed".$conn->connect_error);
}
После подключения PHP1 извлекает информацию о базах данных, хранящихся в соответствующей учетной записи, и отображает переключатели для выбора базы данных и отправляет имя выбранной базы данных методом GET в другой скрипт PHP2.php
-В PHP2.php я хочу отображать ТАБЛИЦЫ в выбранной базе данных. Однако при передаче управления PHP2.php соединение с MySQL разрывается. Сначала я попытался включить свой файл PHP1.php в PHP2.php и использовать переменную $conn, но, конечно, он попытается повторно подключиться к MySQL из-за вышеупомянутого кода, и в то же время первый запрос, содержащий uname и pword, утерян, что привело к ошибке аутентификации.
Как я могу преодолеть эту проблему?
Обновлено: Я видел здесь и другие вопросы, но все они имеют фиксированные usernmae/пароли, поэтому сценарий подключения можно легко поместить в отдельный файл. Я требую, чтобы взять имя пользователя и пароль от пользователя.
@Travis Ваш метод устанавливает соединение с базой данных в момент входа в систему, но я хочу сделать это позже, после получения информации от пользователя.
на каждой странице вы подключаетесь к разным базам данных mysql с разными username
и password
?
@TheLastStark У меня есть несколько баз данных, созданных в одной учетной записи MySQL, и я хочу дать пользователю возможность выбрать базу данных и подключиться к ней, а затем показать таблицы в выбранной базе данных.
Я не думаю, что есть способ подключиться к разным базам данных с другим паролем и именем пользователя без переустановки нового соединения.
я делаю это только ради практики. Но большое спасибо, что сообщили мне, что такие вещи практически не используются :) решение с использованием сессий работает так, как я хочу.
Ясно, я думал, вы хотите использовать новую базу данных без повторного подключения с новым именем пользователя или паролем, я неправильно понял это предложение «но, конечно, он попытается повторно подключиться к MySQL», извините.
Используйте Сессии, который сохранит переменные сеанса на всех страницах:
PHP1
session_start();
$_SESSION['username'] = $username = $_POST['uname'];
$_SESSION['password'] = $password = $_POST['pword'];
$server = "localhost";
$conn = new mysqli($server, $username, $password);
PHP2
session_start();
$username = $_SESSION['username'];
$password = $_SESSION['password'];
$server = "localhost";
$conn = new mysqli($server, $username, $password);
В PHP1 вы захотите проверить, установлены ли значения $_POST
, а на других страницах вы захотите проверить, установлены ли переменные $_SESSION
. См. Иссет.
Большое спасибо, сэр!
Я делаю что-то другое с
mysqli_connect($server, $username, $password, $databasename);
, и это работает очень хорошо. Если вам нужен пример этого, я опубликую ниже, так как вы используетеnew mysqli()
Я не уверен, как это работает