2014-11-29 8 views
0

Я пытаюсь проверить несколько баз данных с заданной пользователем строкой. Но SQL-запрос всегда возвращает true. Он должен возвращать false, если номер телефона существует в отдельных или корпоративных базах данных.CodeIgniter Multiple Table Select Not Working

Индивидуальные пользователи База данных:

| id |  name  |  phone  |  gender  | 
-------------------------------------------------------- 
| 1 |  John  |  5551928321 |  male  | 
| 2 |  Michael |  5553270543 |  male  | 

Корпоративные пользователи База данных:

| id |  name  |  phone  |  company | 
-------------------------------------------------------- 
| 1 |  Megan |  5553748594 |  demo1  | 
| 2 |  Ethan |  5559182012 |  demo2  | 

Индивидуальные и корпоративные таблицы имеют одинаковые и разные поля.

PHP:

$phone = '5551928321'; // $this->input->post('phone', true); 
$query = $this->db->select('individual.id, corporate.id') 
->where('individual.phone', $phone) 
->or_where('corporate.phone', $phone) 
->get('individual, corporate'); 

if ($query->num_rows() > 0) echo 'FALSE'; 
else echo 'TRUE'; 

Я буду очень рад, если кто-то зажигать меня для увидеть, как он будет работать.

Большое вам спасибо.

+0

Я считаю, что вы можете передать только один параметр в get(), так что это -> get («индивидуальный, корпоративный»); неправильно. Посмотрите на это руководство пользователя. Однако я также не уверен в том, есть ли у вас утверждение if. Он всегда возвращает true, потому что строки не выбраны. – Lykos

+0

Я пробовал только $ this-> get ('individual'); или только $ this-> get («корпоративный»); но ничего не получилось. Очень интересная проблема и не может найти какое-либо решение за 2 дня :) –

ответ

0

Вы пробовали что-то вроде этого? (Не проверено)

$query1 = $this->db->select('individual.id')->where('individual.phone', $phone)->get('individual'); 

$query2 = $this->db->select('corporate.id')->where('corporate.phone', $phone)->get('corporate'l); 

if ($query1->num_rows() > 0 || $query2->num_rows() > 0){ 
    echo true; 
} else { 
    echo false; 
} 
+0

Действительно, но нужно делать это с помощью одного запроса, если это невозможно, я буду использовать 2 запроса, подобные вашим. –

+0

Это ли я написал работу? Я не уверен, можете ли вы это сделать в одном запросе. Попробовали ли вы написать команды MySQL и создать требуемый запрос, по-видимому, по phpmyadmin, и проверить, что привело вас обратно? – Lykos

+0

Я не тестировал ваш код, но он должен работать, проблема делает это с одним запросом и сильно полагает, что это должно быть возможно. Я проверил примеры в сети и использовал их только один раз для входов $ _POST, $ _GET. Вот пример: (http://bit.ly/1y4Qmh9) –