Reputation: 666
I'm stumped. Why would a query work in phpMyAdmin but not in a MAMP environment? I've echoed out the query, which returned 0 results in MAMP, copied it and pasted it into phpMyAdmin and the same query returns the expected result.
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'
Below are the lines as they appear in the code
$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 shows:
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'
Upvotes: 1
Views: 1178
Reputation: 562260
In my experience, it's 80% likely that the problem is that you're using two different databases that contain different data.
You should decompose the query into simpler tests until you can find out what's different.
Try the following queries in both environments:
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';
It's likely that the results of one or more of these queries will be different. This means you have two different databases with different data. Either two schemas on the same MySQL instance, or else two separate MySQL instances. You aren't connecting to the database you think you're connecting to in one or the other interface.
Upvotes: 2