Судя по всему, что я нашел и увидел, это кажется правильным. Когда я печатаю $ query, результат будет следующим:
«INSERT INTO для клиентов (FirstName, MiddleInit, LastName, Address, City, State, Zip, Email, Gender) VALUES (?,?,?,?,?,?,?,?,?)»
Параметры должны быть заполнены переменными в bindValues (). Так, например …
INSERT INTO клиенты (FirstName, MiddleInit, LastName, адрес, город, штат, почтовый индекс, электронная почта, пол) ЦЕННОСТИ (Билл, А, Хопкинс, 123 пр., ….)
Я хотел бы придерживаться этого метода — он окружен блоком try / catch. Из распечатки переменной запроса я вижу, в чем проблема.
Что мне не хватает? Я действительно ценю, что вы ищете!
$query = 'INSERT INTO customers (FirstName, MiddleInit, LastName, Address, City, State, Zip, Email, Gender) VALUES (?,?,?,?,?,?,?,?,?)';
echo $query;
$statement = $db->prepare($query);
$statement->bindValue(1, $firstName);
$statement->bindValue(2, $middle);
$statement->bindValue(3, $lastName);
$statement->bindValue(4, $address);
$statement->bindValue(5, $city);
$statement->bindValue(6, $state);
$statement->bindValue(7, $zip);
$statement->bindValue(8, $email);
$statement->bindValue(9, $gender);
$success = ($statement->execute());
Нам нужно больше кода с учетом ошибки, но вы можете попробовать это с подготовленными утверждениями:
$query = 'INSERT INTO customers (FirstName, MiddleInit, LastName, Address, City, State, Zip, Email, Gender) VALUES (:firstName, :middle, :lastName, :address, :city, :state, :zip, :email, :gender)';
$statement = $db->prepare($sql);
$statement->execute(array(':firstName'=>$firstName, ':middle'=>$middle, ':lastName'=>$lastName, ':address'=>$address, ':city'=>$city, ':state'=>$state, ':zip'=>$zip, ':email'=>$email, ':gender'=>$gender));
Других решений пока нет …