Вставка Zend Framework в обработку ошибок БД - PullRequest
0 голосов
/ 05 сентября 2018

Я использую Zend_Db_Adapter_Abstract для манипулирования данными БД, и когда я использую его метод insert с пользователем БД, у которого нет разрешения на вставку данных в БД, я получаю ошибку с кодом 500. Как я могу справиться с этой ситуацией если этот метод не выдает никаких исключений?

Метод выглядит так:

public function insert($table, array $bind)
{
    // extract and quote col names from the array keys
    $cols = array();
    $vals = array();
    $i = 0;
    foreach ($bind as $col => $val) {
        $cols[] = $this->quoteIdentifier($col, true);
        if ($val instanceof Zend_Db_Expr) {
            $vals[] = $val->__toString();
            unset($bind[$col]);
        } else {
            if ($this->supportsParameters('positional')) {
                $vals[] = '?';
            } else {
                if ($this->supportsParameters('named')) {
                    unset($bind[$col]);
                    $bind[':col'.$i] = $val;
                    $vals[] = ':col'.$i;
                    $i++;
                } else {
                    /** @see Zend_Db_Adapter_Exception */
                    require_once 'Zend/Db/Adapter/Exception.php';
                    throw new Zend_Db_Adapter_Exception(get_class($this) ." doesn't support positional or named binding");
                }
            }
        }
    }

    // build the statement
    $sql = "INSERT INTO "
         . $this->quoteIdentifier($table, true)
         . ' (' . implode(', ', $cols) . ') '
         . 'VALUES (' . implode(', ', $vals) . ')';

    // execute the statement and return the number of affected rows
    if ($this->supportsParameters('positional')) {
        $bind = array_values($bind);
    }
    $stmt = $this->query($sql, $bind);
    $result = $stmt->rowCount();
    return $result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...