Почему так сложно построить запрос? Как правило, лучше читать и поддерживать, чем фантазировать.
$sql = sprintf(
"INSERT INTO %s (%s) values (%s)",
"memfis",
implode(", ", array_keys($new_user)),
":" . implode(", :", array_keys($new_user))
);
Возможно, попробуйте изменить это на что-то вроде:
$table = "memfis";
$columnNames = implode(", ", array_keys($new_user));
$columnPlaceholders = ":" . implode(", :", array_keys($new_user));
$sql = "INSERT INTO $table ($columnNames) VALUES ($columnPlaceholders)";
$stmt = $pdo->prepare($sql);
И затем, поскольку ваш запрос будет содержать такие элементы, как :Nom
, в качестве заполнителей, вам нужно использовать bindParam()
.
foreach (array_keys($new_user) as $key) {
$placeholder = ":" . $key;
$stmt->bindParam($placeholder, $new_user[$key]);
}
$stmt->execute();
Я знаю, что код длиннее, но ИМХО легче читать и поддерживать, чем то, что у вас есть.