0

Windowsアプリケーションで、mysqlデータベースに現在の日付を挿入しようとしているクエリがあります

以下のクエリ:

SqlVentaCasas1 = "INSERT INTO VentaCasasHistory (ID, Direccion, Estatus, Precio, " & _
                                "NumeroDias, FechaHoy, Agente, Compania, Unidad, Ciudad ) VALUES ('" & _
                                AddIDCasas2 & "','" & AddDireccionCasas2 & "','" & AddEstatusCasas2 & "'," & AddPrecioCasas2 & ", 0, CURDATE(), '" & AgenteNameCasas2 & "','" & AgenteCompaniaCasas2 & "', '" & AddUnidadCasas2 & "', '" & AddCiudadCasas2 & "' );"


                        CommandVentaCasas1 = New MySqlCommand(SqlVentaCasas1, con)
                        CommandVentaCasas1.CommandType = CommandType.Text
                        CommandVentaCasas1.ExecuteNonQuery()

mysqlに挿入したい値を入力すると、入力した日付をデータベースで確認したときに0000-00-00であることがわかることを除いて、すべてがスムーズに実行されます。

一方、PHPmyAdminから同じクエリを実行すると

INSERT INTO `VentaCasasHistory`(`ID`, `Direccion`, `Estatus`, `Precio`, `NumeroDias`, `FechaHoy`, `Agente`, `Compania`, `Unidad`, `Ciudad`) VALUES ([String1],[String2],[String3],[Integer1],[Integer2],CURDATE(),[String4],[String5],[String6],[String7])

FechaHoyがCURDATE()である場合、本来あるべき日付が正しく挿入されます。

何が問題なのかわからないようです。入力した日付に問題がある場合にのみ、0000-00-00が挿入されることを理解しています。

両方のクエリを「同一」にした理由は、何が間違っているのかを理解するためであり、SQLインジェクションの対象となる可能性があることを知っています。

あなたの助けをいただければ幸いです。

レオP。

これはあなたが私に言った最後の部分のために私が持っているコードです。

Dim StringDate As String

    StringDate = Date.Today.ToString("yyyy-MM-dd")

SqlVentaCasas1 = "INSERT INTO VentaCasasHistory (ID, Direccion, Estatus, Precio, " & _
                                "NumeroDias, FechaHoy, Agente, Compania, Unidad, Ciudad ) VALUES ('" & _
                                AddIDCasas2 & "','" & AddDireccionCasas2 & "','" & AddEstatusCasas2 & "'," & AddPrecioCasas2 & ", 0, STR_TO_DATE('" & StringDate & "', GET_FORMAT(DATE,'ISO')), '" & AgenteNameCasas2 & "','" & AgenteCompaniaCasas2 & "', '" & AddUnidadCasas2 & "', '" & AddCiudadCasas2 & "' );"

残念ながら、それは機能せず、私はまだ0000-00-00を取得します。

4

1 に答える 1

2

CURDATE()で使用されるデフォルト値として実際に指定する必要がありますCREATE TABLECURDATE()つまり、新しいレコードを挿入するときにデフォルト値が設定されているフィールドに日付が自動的に挿入されるため、クエリの一部として入力する必要はありません。

F.ex:

CREATE TABLE MyTable
(
    ID int NOT NULL,
    MyName varchar(30) NOT NULL,
    MyDate datetime NOT NULL DEFAULT CURDATE(),
    PRIMARY KEY (ID)
)

INSERT INTO MyTable (MyName) VALUES ('Epistemex')

MyDateフィールドをに設定しますCURDATE()

お役に立てれば。

于 2012-10-05T00:08:34.643 に答える