2013-12-12 4 views
1

Я работаю над существующим проектом, код которого написан более ранним разработчиком. Когда я прочитал функцию в модели, было написано:Что делает этот активный запрос записи?

 $this->db->select('1', FALSE); 
    $this->db->where('product_id', $product_id); 
    $query = $this->db->get('product');  
    if ($query->num_rows() == 1) { 
     return false; 
    } 
     return true; 

Мне интересно, что делает этот первый оператор? i.e $ this-> db-> select ('1', FALSE); потому что в таблице продуктов нет столбца с именем 1. Я искал в Интернете, но помощи нет. Объясните?

+0

Что делает объект db? В частности, select() объекта db? – JustAPirate

+0

Я знаю, что это _selecting_ столбец, но столбец с именем 1 не существует в таблице продуктов, а код работает нормально. I. Нет ошибки «Неизвестный столбец 1 в таблице продуктов». – Hammad

+0

В коде должен быть определен объект. Это не стандартная функция php. Проверьте, какой объект находится в $ this-> db, и скопируйте нам функцию select() этого класса объекта. – JustAPirate

ответ

0

Как я ничего подобного не видел до сих пор, я сделал бы

echo $this->db->last_query() 

после $this->db->get() просто увидеть фактический SQL-запрос для этого.

0
SELECT 1 FROM 

Используется для определения существования результата. Он вернет столбец из 1 для каждой строки результата.

+0

Разве это не определяется из num_rows() == 1? – Hammad

+0

Нет, поскольку он может возвращать более 1 строки в зависимости от полного запроса и того, что находится в вашей базе данных. Однако я бы предположил, что у вас будет хотя бы одно соответствие продукта. num_rows() просто проверяет, что есть только один результат. – LisaK1308

0
SELECT 1; 

=> 1

SELECT 1 + 1; 

=> 2

Codeigniter вы можете использовать этот запрос, когда

$this->db->select('1', FALSE); 

Если вы не превратить его в FALSE, вы можете только выберите столбцы

$this->db->select('column', TRUE); 
Смежные вопросы