Как исправить фатальную ошибку «Uncaught PDOException: SQLSTATE [22007]» в PHP - PullRequest
0 голосов
/ 28 апреля 2019

У меня проблема с добавлением новых данных в базу данных с использованием PDO.У меня есть форма, где есть несколько полей.Если я оставляю пустое поле, появляется ошибка.Проблема возникла, когда MySQL был обновлен на сервере.На другом сервере и локально проблема не появляется.Установить для сервера во всех формах значения по умолчанию 0 в полях будет очень сложно.

Версия базы данных: 10.3.13-MariaDB-100.cba.1-log - тестирование Debian

Пожалуйста, проверьте, не заполнили ли вы все поля и не сгенерировали ли ошибку.

Это нормально, когда я оставляю пустой ввод и генерируется ошибка?

Код PHP:

$config = require_once 'config.php';
try {
$db = new PDO(
"mysql:host={$config['host']};dbname={$config['database']};charset=utf8",
$config['user'],$config['password'], 
[PDO::ATTR_EMULATE_PREPARES=>false, 
 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
}
catch(PDOException $error)
{
    echo $error->getMessage();
exit('Database error!');
}
if (isset($_POST['dodaj'])) {
    $pole1 = $_POST['pole1'];
    $pole2 = $_POST['pole2'];
    $pole3 = $_POST['pole3'];
    $pole4 = $_POST['pole4'];

    $query = $db->prepare("INSERT into pola VALUES (:pole1, :pole2, :pole3, :pole4)");
    $query->bindValue(':pole1', $pole1, PDO::PARAM_INT);
    $query->bindValue(':pole2', $pole2, PDO::PARAM_INT);
    $query->bindValue(':pole3', $pole3, PDO::PARAM_INT);
    $query->bindValue(':pole4', $pole4, PDO::PARAM_INT);

    $query->execute();
}

HTML код:

<form method="post" action="#">
    <input type="text" id="pole1" name="pole1">
    <input type="text" id="pole2" name="pole2">
    <input type="text" id="pole3" name="pole3">
    <input type="text" id="pole4" name="pole4">

    <input type="submit" name="dodaj" value="dodaj">
</form>

База данных:

pole1 |полюс2 |полюс3 |pole4

Неустранимая ошибка: Uncaught PDOException: SQLSTATE [22007]: Неверный формат даты и времени: 1366 Неверное целочисленное значение: '' для столбца ********. pola. pole3 в строке 1 в ************************ новый 1.php: 18 Трассировка стека: # 0 ******************** новый 1.php (18): PDOStatement-> execute () # 1 {main}, брошенный в ****************************** новый 1.php на линии 18

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