Вы объявили переменную POST после подготовки запроса.Сначала убедитесь, что значения POST присвоены переменным.
// insert a row
$first_name1 = $_POST["first_name1"];
$last_name1 = $_POST["last_name1"];
$email1 = $_POST["email1"];
$stmt = $conn->prepare("INSERT INTO user_input(first_name1, last_name1, email1)
VALUES (:first_name1, :last_name1, :email1)");
$stmt->bindParam(':first_name1', $first_name1);
$stmt->bindParam(':last_name1', $last_name1);
$stmt->bindParam(':email1', $email1);
$stmt->execute();
Обратите внимание на разницу.Я поставил POST один перед запросом.Когда bindParam
выполняется, он может получить значения.