2017-02-13 6 views
0

Ich möchte eine Auswahl AS NULL von MySQL db tun. Dies ist die Auswahlabfrage:Wie NULL auswählen, wenn keine Daten vorhanden sind, und die Daten anzeigen, wenn sie vorhanden sind?

function get_new() 
{ 
    $query = "SELECT DATE_FORMAT(curdate(),'%d/%m-%Y') AS date_created, NULL AS name, NULL AS address, NULL AS status FROM t_penomoran"; 
    $result = $this->db->query($query)->row(); 

    return $result; 
} 

Dies ist der Controller

public function add() 
{ 
    $id   = 0; 
    $master  = $this->MPenomoran->get_new(); 

    $data = array (
     'titlepage'  => APP_TITLEPAGE, 
     'titleapp'  => 'Penomoran', 
     'userid'  => $this->session->userdata('nip'), 
     'id'   => $id, 
     'record'  => $master, 
     'error'   => '', 
     'complete'  => 'true', 
     'loadmethod' => 'add', 
     'contentpage' => 'penomoran/detail'); 

    $this->load->view('shared/master_app', $data); 
} 

Und wenn ich diese verwenden, um auf die Ansicht:

<?php echo $record->name; ?> 

ich Kepp immer Trying to get property of non-object error. Wie löst man das?

Meine Tabellenstruktur:

CREATE TABLE `t_penomoran` (
`nomor` int(50) NOT NULL, 
`date_created` date DEFAULT NULL, 
`name` varchar(100) DEFAULT NULL, 
`jenis_pekerjaan` text, 
`nominal` bigint(20) DEFAULT NULL, 
`address` varchar(50) DEFAULT NULL, 
`pic` varchar(100) DEFAULT NULL, 
`keterangan` varchar(255) DEFAULT NULL, 
`status` int(11) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin 
+0

Haben Sie einen Prüfwert von '$ record' (zB: var_dump())? –

+0

ist es 'NULL'. Es sollte "Datum, NULL, NULL, NULL" richtig sein ?? – ashura91

+0

Die Tabelle 't_penomoran' ist leer (0 Zeilen)? Wenn Tabelle leer ist, ist das Abfrageergebnis = null normalerweise. –

Antwort

1

Wenn die Tabelle leer ist (0 Zeilen), ist das Abfrageergebnis = null normalerweise.

Und wenn Sie Zeilendaten anzeigen möchten, wenn die Zeilen-ID x vorhanden ist, sollten Sie die Spalte auswählen, nicht select NULL AS column, da alle Spaltenwerte für immer null sind, wenn Zeilendaten vorhanden sind.

So ändern Code SQL wählen Sie nicht null, und wenn Abfrage-Ergebnis leer ist, geben ein Standardsätze, wie folgt aus:

function get_data($id) 
{ 
    $query = "SELECT 
      DATE_FORMAT(curdate(),'%d/%m-%Y') AS date_created, 
      `name`, 
      `address`, 
      `status` 
     FROM `t_penomoran` 
     WHERE `nomor` = '{$id}'"; 

    $result = $this->db->query($query)->row(); 

    if (empty($result)) { 
     $result = (object)[ 
      'date_created' => date('d/m-Y'), 
      'name' => null, 
      'address' => null, 
      'status' => null, 
     ]; 
    } 

    return $result; 
} 
+0

gut, verwenden Sie diese Funktion auch für den Zweck der Bearbeitung. Wenn der Wert von ID x vorhanden ist, zeigen Sie die Daten von ID x anstelle von NULL an – ashura91

+0

@ ashura91 Aktualisierte Antwort. Und ich habe Ihre Tabellenstruktur jetzt gesehen, Ihre Tabelle hat keine Spalten-ID oder irgendeine primäre Spalte, Sie müssen sie setzen. –

+0

Nomor ist das gleiche von ID. Ich habe vergessen, – ashura91

0

Ihr Problem ist nicht die NULL als Feld ist, ist es:

$query = "SELECT DATE_FORMAT(curdate(),'%d/%m-%Y') AS date_created, NULL AS name, NULL AS address, AS status FROM t_penomoran"; 

address, AS status 

Sie haben nichts zwischen dem und der AS hier.

+0

das ist typo.it 'NULL AS Status' – ashura91

+0

Wenn dieser Tippfehler in Ihrem Code war, wird es Ihnen den genauen Fehler, den Sie zeigen. Ein einzelner NULL gibt normalerweise an, dass ein Fehler in der SQL vorliegt, und es wird überhaupt keine Ergebnismenge zurückgegeben. Können Sie die tatsächlich ausgeführte Codezeile angeben? Kopieren Einfügen. Die neue Zeile nach der Korrektur des Tippfehlers würde nur fehlschlagen, wenn der Tabellenname falsch ist. –

+0

Ich habe die Abfrage und keinen Tippfehler in der Abfrage überprüfen. – ashura91

1

können Sie verwenden mysql if-else in Ihrer SELECT-Abfrage wie -

SELECT DATE_FORMAT(curdate(),'%d/%m-%Y') AS date_created, 
    IF(name IS NULL, '', name) AS name, 
    IF(address IS NULL, '', address) AS address, 
    IF(status IS NULL, '', status) AS status 
FROM t_penomoran 

ausgeführt ich die Abfrage und gibt das Ergebnis als ohne Fehler unten erwähnt -

date_created | name | address | status 
13/02-2017 |  |   | 1 

hoffen, dass dies dir helfen.

+0

gibt es Fehler.und noch 'NULL' nicht' DATE, NULL, NULL, NULL' – ashura91

+0

Sind Sie an der Stelle der Spalte Null eingefügt, wenn leere Werte eingefügt werden, können Sie Ihre Tabellenstruktur freigeben? –

+0

ja. Die Tabelle erlaubt NULL-Werte, wenn keine Daten eingefügt werden – ashura91

1

, wie wäre es, wenn Sie es tun, genau wie dieser ...

if (empty($record->name)) { echo "Name"; }

Verwandte Themen