Запрос воспламенителя кода с идентификатором автоинкремента возвращает истину, даже если идентификатор неверен - PullRequest
0 голосов
/ 20 июня 2020

Так недавно я делаю простое приложение CRUD с Codeigniter.

В моей таблице есть поле id, которое является полем автоматического увеличения. В моей модели есть функция getById.

public function getById($id){
        return $this->db->get_where($this->_table,["id" => $id])->row();
    }

В моей таблице у меня есть 1 поле с идентификатором 1.

Если я попытаюсь выполнить запрос с неправильным идентификатором, он вернется пустым.

Однако, когда я пытаюсь ввести что-то вроде 1, за которым следует строка типа

1test

, он вернул поле с идентификатором 1 в моей базе данных. Не знаю, так ли это должно быть или это ошибка.

1 Ответ

0 голосов
/ 20 июня 2020

Конечно, Codeigniter преобразует вашу строку в целое число.

PHP инструкция по intval () говорит: : строки, скорее всего, вернут 0, хотя это зависит от крайних левых символов строка. Применяются общие правила целочисленного приведения .

Итак, если вам нужно выдать ошибку для недопустимых записей, вы должны сначала проверить их, возможно, используя is_int () , чтобы разрешить только целочисленный тип, или is_numeri c () , чтобы разрешить строки, содержащие только числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...