PDO передача некорректного параметра в подготовленный запрос

74
31 декабря 2021, 20:40

Передаю ошибочный маркер в параметры подготовленного запроса, но в итоге не выбрасывается никакое исключение, возвращает как успешный результат, хотя запись не инсертится в БД, как обойти это?

$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)
)
Answer 1

Вопрос решен!

При передачи некорректного плейсхолдера, метод 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)
)
READ ALSO
Как в письме удалить один атрибут? Woocommerce

Как в письме удалить один атрибут? Woocommerce

Необходимо из шаблона письма удалить один атрибут товара из двух, те

181
Php как нормально отсортировать строку

Php как нормально отсортировать строку

Постараюсь вкратце обьяснить в чем проблема

96
SQLITE. Не обновляется поле в таблице

SQLITE. Не обновляется поле в таблице

Я сделал счетчик голосования и хочу теперь ограничить пользователей, что бы у каждого пользователя был только 1 голос, для этого я создал...

78
Проблема с отображением emoji при выводе текста с MySQL и отправке в телеграмм

Проблема с отображением emoji при выводе текста с MySQL и отправке в телеграмм

есть проблема с некорректным отображением емоджи в телеграмме при выводе с бдЕмоджи записаны в виде \U0001f6ab (Python source code)

89