Нужно было сохранить информацию из файла в базу.
Столкнулся с такой проблемой:
Invalid parameter number: number of bound variables does not match number of tokens
Вроде все понятно, нужно чтобы количество полей совпадало. Но есть один момент.
Таблица в базе состоит из 12 полей.
При попытке их сохранить показывает ошибку.
Делаю туже работу с 11ю полями ошибки нет. И это для меня загадка.
Вот мой код. Есть идеи?
Так я сохраняю объект в базе
$part = new part();
$part->title = addslashes($data[2]);
$part->dzch = strval($data[1]);
$part->categoryId = $lastId;
$part->detailNumber1 = "";
$part->detailNumber2 = "";
$part->applicability = "";
$part->engineComponents = "";
$part->kp = "";
$part->enginePower = "";
$part->tnvd = "";
$part->сltch = "";
$part->save();
Функция save()
function save()
{
$App = App::get();
$class = get_class($this);
$classVars = get_class_vars($class);
if (!empty($this->id)) {
$query = "
UPDATE
`" . $class . "`
SET ";
foreach ($classVars as $name => $value) {
$query .= "`" . $name . "` = :$name,";
}
$query[strlen($query) - 1] = ' ';
$query .= "
WHERE
`id` = :id";
$App->db->query($query, (array)$this);
} else {
$this->id = guid();
$query = "
INSERT INTO
`" . $class . "` ( ";
foreach ($classVars as $name => $value) {
$query .= " `" . $name . "` ,";
}
$query[strlen($query) - 1] = ' ';
$query .= ")
VALUES ( ";
foreach ($classVars as $name => $value) {
$query .= " :$name ,";
}
$query[strlen($query) - 1] = ' ';
$query .= " ) ";
$App->db->query($query, (array)$this);
}
$App->setObjectToCache($this);
return $this->id;
}
Функция query()
function query($query, $data = null, &$intoObject = null)
{
try {
$sth = $this->pdo->prepare($query);
if ($intoObject)
$sth->setFetchMode(PDO::FETCH_INTO, $intoObject);
if ($data)
foreach ($data as $dataKey => $dataField) {
if (is_array($dataField))
unset($data[$dataKey]);
}
$sth->execute($data);
return $sth;
} catch (PDOException $e) {
n($e);
return null;
}
}
функция n() выводит ответ.
Достаточно долго я пользуюсь такой системой. Не было проблем.