sql >> データベース >  >> RDS >> PostgreSQL

日付フィールドが空の場合、PHPを介してPostgreSQLDBにNULLを挿入します

    問題は、SQL内に一重引用符があることです:

    INSERT INTO product (first_field, second_field, third_field, my_date) 
    VALUES ('$data[0]', '$data[1]', '$data[2]', '$data[3]')
    

    したがって、$data[0]の場合 文字列"NULL"です。 、あなたはこれで終わるでしょう:

    INSERT INTO product (first_field, second_field, third_field, my_date) 
    VALUES ('NULL', ...
    

    そして、NULLリテラル自体ではなくNULLを含む文字列を挿入しようとします。 $data内で引用を行う必要があります SQL内ではなく値:

    # Warning: my PHP is a bit rusty but I think this is right
    if(empty($data[0])) {
        $data[0] = "NULL";
    }
    else {
        $data[0] = "'" . pg_escape_string(utf8_encode($data[$c])) . "'";
    }
    

    そして後で:

    pg_query($_db, "INSERT INTO product (first_field, second_field, third_field, my_date) 
        VALUES ($data[0], $data[1], $data[2], $data[3])";
    

    または、PDO に切り替えてください。 プリペアドステートメントを使用します。



    1. PHPエラー->警告:mysqli_stmt ::execute():mysqli_stmtをフェッチできませんでした|警告:mysqli_stmt ::close()

    2. mysqlの他のテーブルの一致する値に基づいて列を更新します

    3. テーブルをさらに正規化する必要がありますか?

    4. 複数の値に一致するOracleの行の削除