php как проверить что данные не в лазят в тип mysql
Всем привет! php как проверить что данные не в лазят в тип mysql, то есть не влазят в поле базы. В таких случаях вылазит ошибка. Нужно красивое решение. Делать SELECT не хочу, лишний запрос к базе. Можно ошибку ловить, но как её грамотно поймать? Это первое что хочется знать. Второе. Как всё же без ловли ошибки и лишнего запроса проверить что данные влезут в поле базы?
|
А просто увеличить размер поля, чтобы ошибка «data too long» не падала не вариант?
|
Перед записью в базу проверять длину.
|
Цитата:
|
На всех входящих от пользователя данных, должны стоять php валидаторы, и только когда их проходит, дальше что то с этими данными делаешь, например вставляешь в sql
|
Ловить ошибку - самый простой и надёжный способ: оборачиваешь INSERT или UPDATE в try/catch (если используешь PDO) и обрабатываешь PDOException. База сама сообщает, что данные не подходят по типу или длине.
try { $stmt = $pdo->prepare("INSERT INTO table (field) VALUES (:val)"); $stmt->execute(['val' => $data]); } catch (PDOException $e) { echo "Данные не подошли: " . $e->getMessage(); } Проверить заранее без SELECT можно вручную. Для строк: проверяешь длину через strlen() или mb_strlen() и сравниваешь с длиной поля в MySQL (VARCHAR(255) → 255 символов). Для чисел — проверяешь диапазон: TINYINT — от -128 до 127 и так далее. $maxLength = 255; if (mb_strlen($data) > $maxLength) { echo "Данные слишком длинные!"; } Если заранее знаешь структуру поля, можно полностью контролировать данные без лишних запросов. |
Часовой пояс GMT +3, время: 18:05. |