Улучшение запроса: foreach - PullRequest
0 голосов
/ 18 февраля 2012

У меня есть следующая функция модели, и я хотел знать, как я мог бы ее улучшить, а также вытащить необходимые $row при необходимости, чтобы я не получил ошибку PHP.

Как я вытягиваю необходимые данные:

    $data['companyName'] = $this->core_model->companyDetails('coreCompanyName');

Ошибка:

Undefined property: stdClass::$coreContactName
Undefined property: stdClass::$coreContactEmail

Модель:

function companyDetails()
{
    $this->db->select('coreCompanyName, coreContactName, coreContactEmail');

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

    $whereData = array('coreCompanyName' => $companyName, 'coreContactName' => $companyContactName, 'coreContactEmail' => $companyContactEmail);

    $this->db->where($whereData);

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

    $result = '';

    if ($query->num_rows() > 0)
    {

        foreach ($query->result() as $row)
        {
            $result .= $row->coreCompanyName;
            $result .= $row->coreContactName;
            $result .= $row->coreContactEmail;
        }
    }
    return $result;
}

Ответы [ 3 ]

1 голос
/ 18 февраля 2012

Так и должно быть

$this->db->select('coreCompanyName, coreContactName, coreContactEmail');

не

$this->db->select('coreCompanyName','coreContactName','coreContactEmail');

См. Ссылку http://codeigniter.com/user_guide/database/active_record.html#select

Чтобы ограничиться определенным набором записей, используйте функцию where (). например,

$this->db->where('companyId', $companyId);
0 голосов
/ 18 февраля 2012
<?php

/**
 *
 * WHERE ARE : $companyName, $companyContactName, $companyContactEmail being defined ?
 * WHY return 'companyName' WHEN You are quering based on the '$companyName' ???
 * Your query wil fail with out it, that that's all your using ?
 *
 */
function companyDetails() {

    $query = $this->db->query("SELECT companyName FROM core WHERE coreCompanyName = ? AND coreContactName = ? AND coreContactEmail = ? LIMIT 1",
    array($companyName, $companyContactName, $companyContactEmail));
    return ($query->num_rows() == 1) ? $query->row()->companyName : FALSE;

}
0 голосов
/ 18 февраля 2012

Изменение:

$this->db->select('coreCompanyName','coreContactName','coreContactEmail');

Кому:

$this->db->select('coreCompanyName, coreContactName, coreContactEmail');

Итак, вы сказали, что это вытягивает все данные, но вы на самом деле не фильтруете результат. Интересно, какие данные нужны

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...