Здесь есть ряд проблем:
Когда вы пытаетесь подготовить оператор, который вы используете $db->database->prepare()
, и если вы посмотрите на свой класс database
, это строка, содержащая строку members
, то есть public $database = "members";
, которая объясняет ошибку что сообщается
Вы также, кажется, перепутали API mysqli_
и API PDO
и используете некоторые функции API PDO, , которые никогда не будут работать, они совершенно разные звери .
Так что также измените это
/* Email already exists */
/*line 63*/
$db = new DBController;
$db->database->prepare("SELECT * FROM members WHERE email = ?");
$reqemail->execute(array($email));
$emailexist = $reqemail->rowCount();
if($emailexist == 0) {
} else {
$error_message = "Email already exists";
}
К
/* Email already exists */
/*line 63*/
$db = new DBController;
$stmt = $db->conn->prepare("SELECT * FROM members WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows > 0) {
$error_message = "Email already exists";
}
и вы будете использовать объект соединения для подготовки запроса и все mysqli_
API-функции, методы и свойства.
ОБНОВЛЕНИЕ: Все еще создаются двойные учетные записи
По моему мнению, ваш дуп аккаунт находится не в том месте и должен быть перенесен в index2.php.
Или после этой строки добавьте тест против $error_message
, потому что вы забыли проверить, не вызвала ли ошибка при проверке электронной почты.
if(!isset($error_message)) {
require_once("dbcontroller.php");
if ( !isset($error_message) ) {
Мое настойчивое предложение было бы сделать проверку Dup Email в index2 и удалить ее из dbconnect.php
, поскольку она на самом деле не принадлежит dbconnect.php
, так как она будет запускаться без необходимости каждый раз, когда вы хотите подключиться к базе данных в любом скрипте !