如何修复PHP中的“未捕获的PDOException:SQLSTATE [22007]”致命错误

时间:2019-04-28 11:06:58

标签: php mysql pdo

我在使用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 | pole2 | pole3 |极点

  

致命错误:未捕获的PDOException:SQLSTATE [22007]:无效的日期时间格式:1366不正确的整数值:** **第1行的列********polapole3 **********************新1.php:18堆栈跟踪:#0 ***************** ***新的1.php(18):PDOStatement-> execute()#1 {main}抛出************************** ****第18行的新1.php

0 个答案:

没有答案