Der richtige Weg zum einfügen einer NULL in eine Datenbank mit CodeIgniter

Habe ich ExtJS post-Daten aus einem combofield zu CodeIgniter. CodeIgniter liest die gesendeten Daten und führt db->einfügen ein update der mssql-Datenbank.

Ist das problem wenn der Benutzer nicht wählen, eine Auswahl aus der combobox ist es geschickt, um CodeIgniter als nichts, Codeignighter liest dann dieses Stück geschrieben Daten als leere Zeichenfolge und versucht, zu schreiben, dass das int-Feld in der Datenbank verursacht einen Fehler.

Ich glaube, ich brauche CodeIgniter zu behandeln, die string als NULL, wenn Sie leer ist, und eine Zahl, wenn es eine solche. Ich habe versucht mit php type juggling (int) zu konvertieren, aber es macht es eine 0. Dies ist ein Ungültiger Wert, denn es entspricht nicht der Auswahl in meinem man zu viele int-Feld in meiner DB.

Ist es eine Möglichkeit zu CodeIgniter behandle leere Zeichenketten als NULL anstelle des leeren strings?

[BEARBEITET, UM HINZUFÜGEN CODE]

{
//ExtJS combo object
xtype: 'combo',
id: 'Referrer',
store: new Ext.data.Store({
    proxy: new Ext.data.HttpProxy({
        url: '/referrals/index.php/referrers/read',
        method: 'POST'
    }),
    reader: new Ext.data.JsonReader({
        root: 'results',
        fields: [
            {name: 'ID'},
            {name: 'Referrer'}
        ]
    })
}),
displayField: 'Referrer',
valueField: 'ID',
value: 1,
typeAhead: true,
hiddenName: 'Referrers_ID',
mode: 'remote',
triggerAction: 'all',
fieldLabel: 'Referrer',
selectOnFocus: true,
anchor: '100%'
}

//CI CODE TO GRAB FROM POST INTO AN ARRAY THEN OUT TO THE DB
public function create(){
    $data = array(  
        'FirstName' => $this->input->post('FirstName', false),
        'LastName' => $this->input->post('LastName', false),
        'DOB' => $this->input->post('DOB', false),
        'Email' => $this->input->post('Email', false),
        'Phone' => $this->input->post('Phone', false),
        'StudentNo' => $this->input->post('StudentNo', false),
        'Sex' => $this->input->post('Sex', false),
        'Advisors_ID' => $this->input->post('Advisors_ID', false),
        'DateSeen' => $this->input->post('DateSeen', false),
        'Classifications_ID' => join(",", $this->input->post('Classifications_ID', false)),
        'Referrers_ID' => $this->input->post('Referrers_ID', false),
        'Referrals' => $this->input->post('Referrals', false),
        'ReferralNotes' => $this->input->post('ReferralNotes', false),
        'Registration1' => $this->input->post('Registration1', false),
        'Registration2' => $this->input->post('Registration2', false),
        'Notes' => $this->input->post('Notes', false)
    );

    $this->db->insert('Clients', $data);
    $insert_id = $this->db->insert_id();
}
  • können die initial davon ausgehen, es ist ein problem mit Ihrer code, und nicht codeigniter-code... apropos, wir haben doch gesehen, dass alle Ihren code...
  • Mein Erster Gedanke ist: "warum ein NULL-Wert ist OK, aber 0 nicht?" Durch Ihre eigene Zulassung, wird ein NULL-Wert wird genauso ein Waisenkind als 0
  • Nein, ich bin nicht davon ausgehen, dass es ein problem mit Codeignighter, weiß ich nicht, würde ich es nennen, ein problem mit mir entweder. Wirklich, ich Frage mich, ob es einen Weg gibt, für den CI nehmen die leeren Saiten packt aus POST und übergeben Sie an die DB-wie die NULL-Werte anstelle von strings, da das ist, was Sie eingeben, CI, nichts, keine leere Zeichenkette.
InformationsquelleAutor Chris | 2011-03-17
Schreibe einen Kommentar