MDB2: невозможно связать с отсутствующим заполнителем

Я пытаюсь использовать грушу MDB2 объект для выполнения запроса к моей базе данных, но он не работает. Вместо этого я получаю сообщение об ошибке Unable to bind to missing placeholder на execute(), У меня есть функция построителя SQL, которая возвращает оператор SQL и параметры функции хранения данных, которая также принимает массив значений для привязки к оператору.
ПРИМЕЧАНИЕ: я заменил $params за $_POST оба они являются массивом входных данных формы. За исключением того, что я проверяю все входные данные, сохраняю их в объекте для последующего использования приложением, а затем сохраняю в базе данных. Соединение с базой данных — MDB2.
Функция userinfo() возвращает user переменные объекта.

public function build_sql_Insert($arry, $table)
{
if(!is_array($arry)){
return false;
}

$types = str_repeat("s", count($arry));
$keys = array_keys($arry);
$values = array_values($arry);

if ($table==="user") {
$sql = "INSERT INTO $table (" . implode(',', $keys) . ") VALUES (".implode(',', array_fill(0, count($values), '?')).")ON DUPLICATE KEY UPDATE ";
$updates = implode(',', array_map(function($col) {
return "$col = VALUES($col)";
}, $keys));

$sql .= $updates;
return $sql;
}
$sql = "INSERT INTO $table (" . implode(',', $keys) . ") VALUES (" .
implode(',', array_fill(0, count($values), '?')) . ")";

return $sql;
}

Хранить данные

public function storeData($sql, $cxn, $params){

if($stmt = $cxn->prepare($sql, MDB2_PREPARE_MANIP)){
$afft = $stmt->execute($params);
$stmt->free();

return 1;
}
return 0;

}

Переданный пользовательский объект, который возвращается как вызов массива userInfo():

WI_User Object
(
[UserId:WI_User:private] => 1
[FirstName:WI_User:private] => Natasha
[LastName:WI_User:private] => Harris
[Email:WI_User:private] => [email protected]
[Password:WI_User:private] => $2y$10$YrYZs24ihAcRYqBROemTUuTmUQCI4l0zO52pjPGIC2PfKn/tOHC1G
[UserPix:WI_User:private] =>
[Status:WI_User:private] => 1
)

Оператор SQL:

INSERT INTO user (UserId,FirstName,LastName,Email,Password,UserPix,Status) VALUES (?,?,?,?,?,?,?)ON DUPLICATE KEY UPDATE UserId = VALUES(UserId),FirstName = VALUES(FirstName),LastName = VALUES(LastName),Email = VALUES(Email),Password = VALUES(Password),UserPix = VALUES(UserPix),Status = VALUES(Status)

Вызов функции:

$userdata = $this->user->userInfo();
$sql = $this->build_sql_Insert($userdata, $this->moduleName);
$this->storeData($sql, $this->db, $userdata)

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]