И не будет никакой ошибки, потому что код взят из какого-то древнего руководства, написанного обезьяной.
Меня вот поражает, ну ОТКУДА вы вы выкапываете это дерьмо мамонта? На каком ютуб канале, какой гамадрил вот это вот всё вещает?
- print "Ошибка!: " . $e->getMessage() писал дебил, потому что специально выводить ошибки не нужно - РНР и так выведет ошибку, если его об этом попросить.
- try {} catch (PDOException $e) { писал дважды дебил, потому что ПДО будет кидать исключения только если ему об этом сказать при соединении. А дебил об этом не сказал
- try {} catch (PDOException $e) { писал трижды дебил, потому что см. выше. Не нужно ловить ошибку, чтобы её вывести.
- VALUES ('{$name}', '{$surname}', '{$age}', '{$email}', '{$phone}', '{$index}'"); - а вот это уже, я думаю, не руководство, а самодеятельность автора кода. Даже в дебильном руководстве такое вряд ли можно увидеть.
- enter' => $submit - это уже тоже автор кода, от излишнего усердия и ПОЛНОГО не понимания своих действий
- ну и да, почему-то в списке полей id_user есть, а в VALUES внезапно нету. "Где логика, где разум?" (с)
В общем учимся работать с БД в РНР заново
.
// Параметры для подключения
$db_host = "localhost";
$db_user = "root"; // Логин БД
$db_password = "root"; // Пароль БД
$db_base = 'test'; // Имя БД
$db_encoding = "utf8mb4" // кодировка
// Подключение к базе данных
$db = new PDO("mysql:host=$db_host;dbname=$db_base;charset=$db_encoding", $db_user, $db_password);
// Просим ПДО сообщать об ошибках
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
// Собираем данные для запроса
$data = array( 'name' => $name, 'surname' => $surname, 'age' => $age, 'email' => $email, 'phone' => $phone, 'index' => $index);
// Подготавливаем SQL-запрос
$query = $db->prepare("INSERT INTO `users`(`user_name`, `user_surname`, `user_age`, `user_email`, `user_phone`, `user_index`)
VALUES (:name, :surname, :age, :email, :phone, :index)");
// Выполняем запрос с данными
$query->execute($data);
Хотя бы так