Запрос работает в phpMyAdmin, но не через mysql_query - PullRequest
1 голос
/ 31 августа 2009

Я в тупике. Почему запрос работает в phpMyAdmin, а не в среде MAMP? Я повторил запрос, который вернул 0 результатов в MAMP, скопировал его и вставил в phpMyAdmin, и тот же запрос возвращает ожидаемый результат.

select
   c.id
from
    (select id, business_id 
     from coup 
     where match(name) against ('$search')
    ) as c
    left join
       (select business_id 
        from bus 
        where match(name, category, subcat) against ('$search')
       ) as b on
        c.business_id = b.business_id 
    inner join bloc z on
        c.business_id = z.business_id
where
    z.zip = '$zip'

Ниже приведены строки в коде

$q = "select c.id from (select id, business_id from ".TBL_COUPONS." where match(name) against ('".$search."')) as c left join (select business_id from ".TBL_BUSINESS." where match(name, category, subcat) against ('".$search."')) as b on c.business_id = b.business_id inner join ".TBL_BLOCATION." as l on c.business_id = l.business_id where l.zip = '".$zip."'";
$rs = mysql_query($q) or die(mysql_error());
$rec = array();
while(($row = mysql_fetch_array($rs)) !== FALSE ){
    $rec[] = $row[0];   
}

echo $ q показывает:

select c.id from (select id, business_id from coupons where match(name) against ('walk')) as c left join (select business_id from business where match(name, category, subcat) against ('walk')) as b on c.business_id = b.business_id inner join buslocations as l on c.business_id = l.business_id where l.zip = '91326' 

1 Ответ

2 голосов
/ 31 августа 2009

По моему опыту, 80% вероятности состоит в том, что вы используете две разные базы данных, которые содержат разные данные.

Вы должны разбивать запрос на более простые тесты, пока не сможете выяснить, в чем отличие.

Попробуйте выполнить следующие запросы в обеих средах:

SELECT COUNT(*) FROM coupons;
SELECT COUNT(*) FROM coupons WHERE MATCH(name) AGAINST ('walk');

SELECT COUNT(*) FROM business;
SELECT COUNT(*) FROM business WHERE MATCH(name, category, subcat) AGAINST ('walk');

SELECT COUNT(*) FROM bloc;
SELECT COUNT(*) FROM bloc WHERE zip = '91326';

Вероятно, результаты одного или нескольких из этих запросов будут другими. Это означает, что у вас есть две разные базы данных с разными данными. Либо две схемы в одном экземпляре MySQL, либо два отдельных экземпляра MySQL. Вы не подключаетесь к базе данных, к которой, по вашему мнению, подключаетесь, в том или ином интерфейсе.

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