Я создаю систему регистрации и входа, используя PHP и MySQL. У меня есть 2 проекта, старый работает отлично, а новый нет.
В моем старом проекте у меня есть файл olddb c. php, который мне нужен в oldlogin. php и старый регистр. php. В обоих файлах это все, что мне нужно сделать, чтобы использовать переменную $ con, получить доступ к базе данных и кое-что сделать.
<?php
$DATABASE_HOST = 'localhost';
$DATABASE_USER = 'root';
$DATABASE_PASS = '';
$DATABASE_NAME = 'customer_db';
$con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if (mysqli_connect_errno())
{
$err_msg = "Failed to connect to MySQL:".mysqli_connect_error();
}
Но в моем новом проекте это не сработало, и я не знаю почему. Я не мог использовать переменную $ con из файла newdb c. php. Я пробовал разные вещи и в итоге использовал класс Database с методом в нем, который должен получить $ con.
class Database{
function dbcon (){
$DATABASE_HOST = 'localhost';
$DATABASE_USER = 'root';
$DATABASE_PASS = '';
$DATABASE_NAME = 'users_db';
$con;
if($con === NULL){
$con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if (mysqli_connect_errno())
{
$err_msg = "Failed to connect to MySQL:".mysqli_connect_error();
return $err_msg;
}
}
return $con;
}
}
в моем новом реестре. php Я использую это, чтобы получить соединение, и он работает. Я могу зарегистрировать нового пользователя и перенаправить на страницу учетной записи ..
$conn = new Database();
$con = $conn->dbcon();
, но в моем новом логине. php соединение не работает. Если я попытаюсь использовать $ con только для того, чтобы требовать db c. php, как это было в моем старом проекте, переменная $ stmt пуста, она перенаправляет и отображает сообщение об ошибке. Если я попытаюсь установить соединение, как в новом регистре. php он не перенаправляет, он остается при входе в систему. php и показывает пустую страницу.
else{
$conn = new Database();
$con = $conn->dbcon();
$sql = "SELECT * FROM user WHERE username = ?";
$stmt = mysqli_stmt_init($con);
if(!mysqli_stmt_prepare($stmt, $sql)){
$err_msg = "Database Problems";
header("Location: ../index.php?logError=".$err_msg);
exit();
}
else {
//bind params and execute blah blah
}
Я не понимаю, почему $con
работает в моем старом проекте так легко, а новый проект настолько трудоемок. Это та же версия PHP.
Если я попробую по-старому, я получу следующее:
PHP Примечание: неопределенная переменная: con in login. php в строке 16, referer: http://localhost/index.php?logError=Database%20Problem
PHP Предупреждение: mysqli_stmt_init () ожидает, что параметр 1 будет mysqli, значение null задано при входе в систему. php в строке 16, referer: ht-tp: //localhost/index.php
PHP Предупреждение: mysqli_stmt_prepare () ожидает, что параметр 1 будет mysqli_stmt, null для входа в систему. php в строке 17, referer: ht-tp : //localhost/index.php
Если я попробую по-новому, ничего не произойдет.