2016-11-22 5 views
0

Ich arbeite an einem Upload-Bildformular, das einen Datensatz in der Datenbank aktualisiert. Die Logik ist if (isset($valueofupload)) dann aktualisieren Sie den Datensatz.Codeigniter 3.1 IFNULL und Coalesce funktioniert nicht?

Ich habe versucht, IFNULL oder COALESCE in Codeigniter zu verwenden, aber es funktioniert nicht.

Hier ist der Code:

$row = $rs->row_array(); 

$sql = "UPDATE table 
     SET location_pic = IFNULL(?, ?) WHERE event_id = ?"; 

$query = $this->db->query($sql, array($arr_newname['0'], $row['location_pic'], $id)); 
+0

Wie funktioniert es nicht? Bitte sei spezifischer. – sepehr

+0

Also, was sind die Werte von $ arr_newname [0], $ row ['location_pic'] und $ id? – TimBrownlaw

+0

if (isset ($ value)) dann aktualisieren. das ist was ich will. aber wenn (isset) ist nicht gut für mich, denn wenn ich 100 field input form habe ich brauche wenn iset (iset) 100 mal? – tuchawat

Antwort

0

Ihre Frage ist ein wenig vage. Aber von dem, was ich verstehe, möchten Sie location_pic Feld eines Ereignissatzes mit $arr_newname['0'] oder aktualisieren, wenn ersteres null ist. Warum versuchst du das nicht stattdessen?

$row = $rs->row_array(); 

$sql = "UPDATE table SET location_pic = ? WHERE event_id = ?"; 

$query = $this->db->query($sql, [ 
    $arr_newname['0'] ?? $row['location_pic'], 
    $id // Probably $row->id ? 
]); 

Lesen Sie mehr über null coalesce Operator (??) in PHP 7:
https://secure.php.net/manual/en/migration70.new-features.php

Oder wenn Sie den Datensatz im Fall zu aktualisieren, dass $arr_newname['0'] gesetzt ist, warum nicht:

if (isset($arr_newname['0'])) { 
    // ... 

    $sql = "UPDATE table SET location_pic = ? WHERE event_id = ?"; 

    $query = $this->db->query($sql, [$arr_newname['0'], $id]); 

    // ... 
} 
+0

Ich weiß, Isset, aber es ist nicht gut für die Zukunft. Wenn ich 100 Feld habe, muss ich wenn iset 100 Feld – tuchawat

+3

Aber es ist in Ordnung mit Ihnen, 100 MySQL-Abfragen durchzuführen, die tatsächlich keine Daten ändern? Übrigens können Sie eine "foreach" -Schleife verwenden, um über die Feldnamen zu iterieren und vor dem Absetzen der Abfrage zu überprüfen, ob sie in einem Schritt gesetzt sind. – sepehr

Verwandte Themen