Передаю ошибочный маркер в параметры подготовленного запроса, но в итоге не выбрасывается никакое исключение, возвращает как успешный результат, хотя запись не инсертится в БД, как обойти это?
$query = "INSERT INTO Action_logs (request_id, msisdn, service_key, action, details, channel)
VALUES (:request_id, :msisdn, :service_key, :action, :details, :channel)";
$params = array(
'request_id' => XXXX,
'msisdn' => XXXX,
'service_key' => XXXX,
'action' => "Check User Profile Status",
'details' => "User profile doesn't exists!",
'wrong_param' => "WRONG_PARAM"
);
UPDATE:
public function preparedQuery($query, $params)
{
$thisFunc = basename(__FUNCTION__);
if (!$this->checkConnection())
{
return false;
}
try
{
$stmt = $this->pdo->prepare($query)->execute($params);
}
catch (\PDOException $e)
{
$this->utility->loggerAll($this->logPrefix, $thisFunc, $this->logsEnabled, 1, "Failed to execute prepared query! " . $e->getMessage() . ", query: " . $query . ", params: " . json_encode($params));
return false;
}
return $stmt;
}
UPDATE: Вывел ошибку результата выполнения execute
Array
(
[0] => HY000
[1] => 1036
[2] => OCIBindByName: ORA-01036: illegal variable name/number
(/usr/local/src/php-7.2.24/ext/pdo_oci/oci_statement.c:348)
)
Вопрос решен!
При передачи некорректного плейсхолдера, метод execute()
не выбрасывает исключение а возвращает false. Описание ошибки можно получить вызвав метод PDO::errorInfo который вернет массив с ошибкой.
Пример:
Array
(
[0] => HY000
[1] => 1036
[2] => OCIBindByName: ORA-01036: illegal variable name/number
(/usr/local/src/php-7.2.24/ext/pdo_oci/oci_statement.c:348)
)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Необходимо из шаблона письма удалить один атрибут товара из двух, те
Я сделал счетчик голосования и хочу теперь ограничить пользователей, что бы у каждого пользователя был только 1 голос, для этого я создал...
есть проблема с некорректным отображением емоджи в телеграмме при выводе с бдЕмоджи записаны в виде \U0001f6ab (Python source code)