Для того чтобы вставить значение в поле `password`, которое включает два символа доллара и одну одинарную кавычку, вам нужно правильно обработать строку и экранировать специальные символы. Одной из причин, почему вы получаете дополнительные слэши, является использование функции `preg_quote()`, которая экранирует все специальные символы, включая символы, которые вам не нужно экранировать в контексте SQL-запроса.
В вашей ситуации можно использовать двойные доллары (`$$`) для задания литералов в PostgreSQL, что позволяет вам избежать необходимости экранировать одинарные кавычки внутри строки. Вот как вы можете адаптировать ваш код:
```php
$query = "INSERT INTO client_ssh(client_name, ssh_login, ssh_password)
VALUES ('$client_name', '$ssh_login', '$ssh_password')";
```
Если вы хотите использовать dollar-строки для вставки, то можете сделать так:
```php
$query = "INSERT INTO client_ssh(client_name, ssh_login, ssh_password)
VALUES ('$client_name', '$ssh_login', $$" . $ssh_password . "$$)";
```
Либо вы можете оставить одинарные кавычки, но избегать экранирования:
```php
$query = "INSERT INTO client_ssh(client_name, ssh_login, ssh_password)
VALUES ('$client_name', '$ssh_login', '" . str_replace("'", "''", $ssh_password) . "')";
```
Таким образом, строка `'$ssh_password'` будет вставлена в БД корректно, а одинарные кавычки будут экранированы путем удвоения их.
При работе с SQL-запросами всегда полезно использовать подготовленные выражения и параметризованные запросы, чтобы избежать SQL-инъекций и проблем с экранированием. Пример использования подготовленных выражений с `PDO` может выглядеть так:
```php
$stmt = $pdo->prepare("INSERT INTO client_ssh (client_name, ssh_login, ssh_password) VALUES (?, ?, ?)");
$stmt->execute([$client_name, $ssh_login, $ssh_password]);
```
Таким образом, вы можете избежать любых проблем с экранированием, так как PDO сам будет обрабатывать специальные символы для вас.