Mysqli описание запросов к базе данных в классе? Хочу обработку запроса к базе данных описать в методе класса.function verifyUser($name) $query = "SELECT psw, user_group FROM users WHERE name = ?" $stmt = $mysqli->stmt_init() if ($stmt = $mysqli->prepare($query)) /* связываем параметры с метками * $stmt->bind_param("s", $name) /* запускаем запрос * $stmt->execute() /* связываем переменные с результатами запроса * $stmt->bind_result($psw, $user_group) /* получаем значения * $stmt->fetch() printf("login - %s, password - %s, user_group - %s", $name, $psw, $user_group) /* закрываем запрос * $stmt->close()
$name = $_POST["name"] $auth = new Auth($name) $auth->verifyUser($name) $mysqli - объект класса mysqli. Соединение с базой выполнено Итог: Fatal error: Call to a member function stmt_init() on a non-object Указывает на строку $stmt = $mysqli->stmt_init(); Если использовать код вне класса, то все работает. Я понял, что $stmt должен быть объектом. Как его объявить в классе я не знаю и устал уже искать примеры.
Для использования объекта mysqli внутри класса, его необходимо передать в конструктор класса. Например:
class Authprivate $mysqli
public function __construct($mysqli)
$this->mysqli = $mysqli
public function verifyUser($name)
$query = "SELECT psw, user_group FROM users WHERE name = ?"
$stmt = $this->mysqli->stmt_init()
if ($stmt = $this->mysqli->prepare($query))
/* связываем параметры с метками *
$stmt->bind_param("s", $name)
/* запускаем запрос *
$stmt->execute()
/* связываем переменные с результатами запроса *
$stmt->bind_result($psw, $user_group)
/* получаем значения *
$stmt->fetch()
printf("login - %s, password - %s, user_group - %s", $name, $psw, $user_group)
/* закрываем запрос *
$stmt->close()
$name = $_POST["name"]
$mysqli = new mysqli("localhost", "username", "password", "database")
$auth = new Auth($mysqli)
$auth->verifyUser($name);
Теперь объект mysqli передается в конструктор класса Auth и может быть использован в методе verifyUser.