Я думаю, что главная проблема здесь заключается в типе строк, которые вы использовали.
В PHP есть как минимум 2 строковых способа представления строк.
одинарные кавычки -> записывает все как есть, например, 'hello $world'
буквально печатает hello $world
.
двойные кавычки -> печатаетиз переменных, которые встроены внутри, например, "$data"
выведет значение переменной $data
.Обратите внимание, что переменные данных, которые не являются «простыми», или, точнее, те, которые имеют квалификаторы, такие как $this->data
или даже $row['data']
, имеют , заключенные в фигурные скобки, такие как "{$this->data}"
и "{$row['data']}"
, или иначевам будет трудно анализировать их синтаксический анализатор, и, следовательно, вы можете получить неожиданные результаты.
Сказав это, ваш код может быть изменен на следующее ...
$add_query = "INSERT into `users`"
. "(`user_id` , `first_name` , `middle_name` , `last_name` , `user_name` , `email` , `contact_number` , `password` , `gender` , `date_of_birth` , `country` , `city` , `profile_image` , `created_at` , `updated_at` , `role`)"
. "VALUES"
. "('NULL' , {$this->first_name} , {$this->middle_name} , {$this->last_name} , {$this->user_name} , {$this->email} , {$this->contact_number} , {$this->password} , {$this->gender} , {$this->dob} , {$this->country} , {$this->city} , {$this->profile_image} , NOW() , NOW() , 'visitor')";
$db->query($add_query);
if ($db->errno) {
throw new Exception($db->error);
$storage_path = "../storage/" . $this->user_name . "/";
if (!is_dir('../storage')) {
if (!mkdir('../storage')) {
throw new Exception("Storage Directory not created");
}
}
if (!is_dir("../storage/{$this->user_name}")) {
if (!mkdir("../storage/{$this->user_name}")) {
throw new Exception("User Directory not created");
}
}
$upload = move_uploaded_file($this->profile_tmp_name, $storage_path . $this->profile_image);
if (!$upload) {
throw new Exception("User Image not uploaded");
}
}
Однако, если проблема не устранена.Затем вы должны убедиться, что каталог, в который вы пытаетесь переместить загруженный файл, уже существует и имеет права на запись для пользователя, который пытается записать в него.обычно в UNIX это может быть достигнуто с помощью chmod 777 /path/to/directory
.