Alexander Zakharenko Alexander Zakharenko - 3 months ago 8
MySQL Question

Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined'

I read a lot of similar topics, but i can't understand my mistake.

Problem:

Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in I:\home\lm.ru\www\classes\db.class.php:39 Stack trace: #0 I:\home\lm.ru\www\classes\db.class.php(39): PDOStatement->execute(Array) #1 I:\home\lm.ru\www\classes\page.class.php(34):


Code:

class Page
{
public $id = "";
public $link = ""; //+
public $links_count = 0;//+
public $places_count = 0;
public $external_links = 0; //+
public $context = 0;
public $has_text = 0;
public $text = "";
public $ya_index = 0;
public $ya_index_data = 0;
public $google_pr = 0;
public $google_pr_date = 0;
public $level = 0; // 0 - main, 1 - 2 level... +
public $title = ""; // +
public $is_active = 1;
public $deleted = 0;
public $site_id = 0; //+

function Add($data)
{
foreach($data as $key => $value)
{
$this->$key = $value;
}

print_r((array)$this);

PDO_wrap::Change("INSERT INTO pages (id, link, links_count, places_count, external_links, context, has_text, text, ya_index, ya_index_date, google_pr, google_pr_date, level, title, is_active, deleted, site_id) VALUES(:id, :link, :links_count, :places_count, :external_links, :context, :has_text, :text, :ya_index, :ya_index_date, :google_pr, :google_pr_date, :level, :title, :is_active, :deleted, :site_id)", (array)$this);

$this->id = PDO_wrap::LastInsertId();
}

}


PDO_wrap method:

public static function Change($query, $params = array())
{
$sql = self::$pdo->prepare($query);
$sql->execute($params);
return $sql->rowCount();
}

Answer

You have a mismatch between class props and your values list

$ya_index_data; 

vs

:ya_index_date