SQLSTATE : инструкция pdo во вставке в mysql db

Здесь мой PHP-код реализует insert в db:

<?php require_once "includes/db_data_inc.php"; try { $DBH = new PDO("mysql:host=$db_host;dbname=$db_name",$db_user,$db_pass); $DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $cathy = new patient($_POST['name'], $_POST['surname'], $_POST['address'], $_POST['birth-place'], $_POST['province'], $_POST['dt'], $_POST['gender'], $_POST['select']); $STH = $DBH->prepare("INSERT INTO users (name, surname, address, birth_place, province, dt, sex, case) value (:name :surname, :address, :birth_place, :province, :dt, :sex, :case)"); $STH->execute((array)$cathy); } catch (PDOException $pdoe) { error_log($pdoe->getMessage()); die("An error was encountered!"); } ?> 

Здесь находится db_data_inc.php где хранятся db_info и где я создаю объект пациента

  $db_host = 'localhost'; $db_name = 'main_db'; $db_user = 'root'; $db_pass = 'root'; /* Create an object patient */ class patient { public $name; public $surname; public $address; public $birth_place; public $province; public $birth_date; public $sex; public $case; function __construct($nm,$sur,$addr,$bp,$pr,$bd,$sx,$cs) { $this->name = $nm; $this->surname = $sur; $this->address = $addr; $this->birth_place = $bp; $this->province = $pr; $this->birth_date = $bd; $this->sex = $sx; $this->case = $cs; } } 

Я получаю эту ошибку:

 [10-Feb-2012 21:14:29] SQLSTATE[HY093]: Invalid parameter number: parameter was not defined 

Но я не понял причину … почему я получил эту ошибку? кто-то может мне помочь? Где ошибка?

В вашем запросе вы используете :dt в качестве заполнителя, но в конструкторе класса вы используете $this->birth_date .

После литья это создаст массив с индексом « birth_date' , который не совпадает с именованным параметром "dt" : выберите тот или иной.

Не уверен, что это причина вашей ошибки, но в вашем заявлении вставки CASE является зарезервированным словом MySQL и должна быть экранирована с обратными окнами.

 $STH = $DBH->prepare("INSERT INTO users (name, surname, address, birth_place, province, dt, sex, `case`) value (:name :surname, :address, :birth_place, :province, :dt, :sex, :case)");