Como selecionar NULL se não houver dados e exibir os dados se ele existir?

Gostaria de fazer um SELECT como NULL do MySQL db. Esta é a consulta de seleção:

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; } 

Este é o controlador

 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); } 

E quando eu uso isso na visão:

 name; ?> 

I kepp getting Trying to get property of non-object error . Como resolver isso?

Minha estrutura de tabela:

 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 

Se a tabela estiver vazia (0 rows), o resultado da consulta = nulo é normalmente.

E você deseja mostrar os dados da linha quando a ID da linha x existe, você deve selecionar coluna, não select NULL AS column , porque, se houver dados da linha, todo o valor da coluna é nulo para sempre.

Então, mude o código para SQL, não selecione nulo e, quando o resultado da consulta estiver vazio, retornar um conjunto padrão, como este:

 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; } 

Que tal se você simplesmente fizer isso assim …

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

Você pode usar mysql if-else em sua consulta selecionada como –

 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 

Eu executei a consulta e dá o resultado conforme mencionado abaixo sem nenhum erro –

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

Espero que isso o ajude.

Seu problema não é o campo NULL como é:

 $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 

Você não tem nada entre o, e o AS aqui.