web-dev-qa-db-fra.com

Requête CodeIgniter Select

J'ai une simple requête d'enregistrement CodeIgniter Active pour sélectionner un ID:

$q = $this -> db
           -> select('id')
           -> where('email', $email)
           -> limit(1)
           -> get('users');

Comment puis-je affecter l'ID ci-dessus à une variable (par exemple, $ id) .__ 

echo "ID is" . $id;

Merci.

9
Roman

C'est assez simple. Par exemple, voici un de mes codes aléatoires: 

function news_get_by_id ( $news_id )
{

    $this->db->select('*');
    $this->db->select("DATE_FORMAT( date, '%d.%m.%Y' ) as date_human",  FALSE );
    $this->db->select("DATE_FORMAT( date, '%H:%i') as time_human",      FALSE );


    $this->db->from('news');

    $this->db->where('news_id', $news_id );


    $query = $this->db->get();

    if ( $query->num_rows() > 0 )
    {
        $row = $query->row_array();
        return $row;
    }

}   

Cela retournera la "ligne" que vous avez sélectionnée en tant que tableau afin que vous puissiez y accéder comme ceci: 

$array = news_get_by_id ( 1 );
echo $array['date_human'];

Je conseillerais également fortement, de ne pas enchaîner la requête comme vous le faites. Toujours les avoir séparément, comme dans mon code, ce qui est clairement beaucoup plus facile à lire. 

Notez également que si vous spécifiez le nom de la table dans from (), vous appelez la fonction get () sans paramètre

Si vous n'avez pas compris, n'hésitez pas à demander :)

17
Herr

utilisez Lignes de résultats .
row () method renvoie une seule ligne de résultat.

$id = $this 
    -> db
    -> select('id')
    -> where('email', $email)
    -> limit(1)
    -> get('users')
    -> row();

alors, vous pouvez simplement utiliser comme vous voulez. :)

echo "ID is" . $id;
2
Pasindu Jayanath

un chemin court serait 

$id = $this -> db
       -> select('id')
       -> where('email', $email)
       -> limit(1)
       -> get('users')
       -> row()
       ->id;
echo "ID is ".$id;
2
Raza Ahmed
function news_get_by_id ( $news_id )
{

    $this->db->select('*');
    $this->db->select("DATE_FORMAT( date, '%d.%m.%Y' ) as date_human",  FALSE );
    $this->db->select("DATE_FORMAT( date, '%H:%i') as time_human",      FALSE );


    $this->db->from('news');

    $this->db->where('news_id', $news_id );


    $query = $this->db->get();

    if ( $query->num_rows() > 0 )
    {
        $row = $query->row_array();
        return $row;
    }

}   
This 
1
user4225743

echo $ this-> db-> select ('titre, contenu, date') -> get_compiled_select ();

0
Arnold Machado
public function getSalary()
    {
        $this->db->select('tbl_salary.*,tbl_employee.empFirstName');
        $this->db->from('tbl_salary');
        $this->db->join('tbl_employee','tbl_employee.empID = strong texttbl_salary.salEmpID');
        $this->db->where('tbl_salary.status',0);
        $query = $this->db->get();
        return $query->result();
    }
0
Saravanan

C'est ton code

$q = $this -> db
       -> select('id')
       -> where('email', $email)
       -> limit(1)
       -> get('users');

Essaye ça

$id = $q->result()[0]->id;

ou celui-ci, c'est plus simple

$id = $q->row()->id;
0
Vindicated

Lorsque vous utilisez codeIgniter Framework, reportez-vous à ce lien d’enregistrements actifs. comment les données interagissent avec la structure et plus encore.

Les fonctions suivantes vous permettent de générer des instructions SQL SELECT. 

Sélection de données

$ this-> db-> get ();

Exécute la requête de sélection et renvoie le résultat. Peut être utilisé seul pour récupérer tous les enregistrements d'une table:

$query = $this->db->get('mytable');

Avec accès à chaque rangée

$query = $this->db->get('mytable');

foreach ($query->result() as $row)
{
    echo $row->title;
}

Où des indices

$this->db->get_where();

PAR EXEMPLE:

 $query = $this->db->get_where('mytable', array('id' => $id), $limit, $offset);

Sélectionnez un champ

$this->db->select('title, content, date');

$query = $this->db->get('mytable');

// Produces: SELECT title, content, date FROM mytable

PAR EXEMPLE

$this->db->select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4') AS amount_paid', FALSE); 
$query = $this->db->get('mytable');
0
Ravi Chauhan