Проблема с глобальной переменной $db
Всем привет , решил я сделать создание аккаунт через классы (через её функции) , тут я столкнулся с такой проблемой что моя $db находит мой класс , проблема была в видимости $db , сделал я её глобальной и тут вылезла такая ошибка :
Parse error: syntax error, unexpected '=', expecting ';' or ',' in C:\MAMP\htdocs\exmp1\function.php on line 6
Сама база данных
try {
global $db = new PDO("mysql:host=localhost;dbname=firstdatabase", 'root', 'root');
}
catch(PDOException $e) {
echo $e->getMessage();
}
Сам класс с функцией создания аккаунта
class User {
public static function AddUser($login, $password) {
$sql = "INSERT INTO users (login, password) VALUES (:login, :password)";
$statment = $db->prepare($sql);
$statment->bindParam(":login", $login);
$statment->bindParam(":password", $password);
$statment->execute();
}
}
Как решить данную проблему ? Заранее спасибо всем кто ответил )
Ответы (1 шт):
Есть такой старый анекдот.
Вот тебе тоже надо определиться - или "через классы", или "с глобальной переменной".
Судя по всему, что такое классы ты не понимаешь от слова "совсем". Но если прямо очень хочется, чтобы всё было как у взрослых, то про глобальные переменные надо вообще навсегда забыть. А $db надо передавать в конструктор и присваивать свойству класса:
<?php
class User {
private $db;
/* Get database access */
public function __construct(\PDO $pdo) {
$this->db = $pdo;
}
public function AddUser($login, $password) {
$sql = "INSERT INTO users (login, password) VALUES (:login, :password)";
$statment = $this->db->prepare($sql);
$statment->bindParam(":login", $login);
$statment->bindParam(":password", $password);
$statment->execute();
}
}
И соответственно, в коде
$user = new User($db);
$user->AddUser($login, $password);
В общем все как написано в этом ответе
Если же это все пока для тебя слишком сложно, то не надо мучать классы - пиши функциями и инклюдами.
Да, и код соединения тоже неправильный. Соединяться надо так как написано здесь