繁体   English   中英

PDO 用动态语句插入 null 代替空

[英]PDO insert null instead of empty with dynamic statement

我有一个带有动态创建语句的 PDO,当我尝试将空数据插入十进制字段时遇到错误,我相信问题是我需要输入null而不是空的。 这是我的代码:

    try {
    $options = [
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
    \PDO::ATTR_EMULATE_PREPARES => false,
    ];
    $conn = new PDO("mysql:charset=utf8mb4;host=$servername;dbname=$dbname", $username, $password);

    function escape_mysql_identifier($field){
        return "`".str_replace("`", "``", $field)."`";
    }

    function prepared_insert($pdo, $table, $data) {
        $keys = array_keys($data);
        $keys = array_map('escape_mysql_identifier', $keys);
        $fields = implode(",", $keys);
        $table = escape_mysql_identifier($table);
        $placeholders = str_repeat('?,', count($keys) - 1) . '?';
        $sql = "INSERT INTO $table ($fields) VALUES ($placeholders)";
        $pdo->prepare($sql)->execute(array_values($data));
    }

    prepared_insert($conn, 'products', $data);

    $id = $conn->lastInsertId();

    if ($id > 0) {
        echo json_encode(array('response'=>'success'));
    }else{
        echo json_encode(array ('response'=>'error','errorMessage'=>'Row not created'));
    }

}catch(PDOException $e){
    
    echo json_encode(array ('response'=>'error','errorMessage'=>$e->getMessage()));
}
    $conn = null;

我怎样才能使这个插入null而不是空的?

更改您的餐桌设置。 将其设置为接受该列中的 null:

ALTER TABLE `table` CHANGE `column` `column` VARCHAR(255) NULL DEFAULT NULL; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM