Я пытаюсь вставить данные в базу данных.Я могу успешно подключаться и вставлять данные вручную, но я хотел бы автоматизировать это.Пользователь загружает файл, и путь к нему сохраняется в $hold_path
.Я хотел бы вставить этот путь в базу данных, но я не могу понять, как вставить его автоматически.Например, в базе данных есть пользователи / 1 / image: xxx.Так как users / 1 уже существует, я бы хотел вставить $hold_path
в users / 2.Как я могу увеличить 2 до 3, если users / 2 уже существует.
Ниже мой php-код.
require_once './vendor/autoload.php';
use Kreait\Firebase\Factory;
use Kreait\Firebase\ServiceAccount;
$target_path = 'uploads/';
$new_name = incrementFileName($target_path, $_FILES['data']['name']);
if(move_uploaded_file($_FILES['data']['tmp_name'], 'uploads/'.$new_name))
{
echo "The file ". basename( $_FILES['data']['name']).
" has been uploaded";
$hold_path = "http://xxxx/uploads/" . $new_name;
echo $hold_path;
$users = new Users();
// How to increase the 17 if it already exists in the database automatically, since right now its manual.
$users->insert([
'17/image' => $hold_path
]);
} else{
echo "There was an error uploading the file, please try again!";
}
function incrementFileName($file_path,$filename){
if(count(glob($file_path.$filename))>0)
{
$file_ext = end(explode(".", $filename));
$file_name = str_replace(('.'.$file_ext),"",$filename);
$newfilename = $file_name.'_'.count(glob($file_path."$file_name*.$file_ext")).'.'.$file_ext;
return $newfilename;
}
else
{
return $filename;
}
}
class Users
{
protected $database;
protected $dbname = 'users';
public function __construct()
{
// Connection to Firebase
$acc = ServiceAccount::fromJsonFile(__DIR__.'/xxx.json');
$firebase = (new Factory)->withServiceAccount($acc)->create();
$this->database = $firebase->getDatabase();
}
public function get(int $userID = NULL)
{
if(empty($userID) || !isset($userID))
{
return FALSE;
}
if($this->database->getReference($this->dbname)->getSnapshot()->hasChild($userID))
{
return $this->database->getReference($this->dbname)->getChild($userID)->getValue();
}
else
{
return FALSE;
}
}
public function insert(array $data)
{
if(empty($data) || !isset($data))
{
return FALSE;
}
foreach ($data as $key => $value) {
$this->database->getReference()->getChild($this->dbname)->getChild($key)->set($value);
}
return TRUE;
}
}
?>
Снимок базы данных пользователей.
Я хочу вставить вновь полученный файл в файл users / 2, а затем автоматически следующий файл в users / 3 и т. Д. ...