SQL-запрос, соединения и где

#php #sql

#php #sql

Вопрос:

Я пытаюсь выполнить довольно простой запрос, но, похоже, он не возвращает абсолютно никакого результата;

 $q  = "SELECT DISTINCT c.product_sku, c.compare_at, c.product_discount_id, d.amount FROM #__{vm}_product as c
LEFT OUTER JOIN #__vm_product_discount as d ON d.discount_id = c.product_discount_id WHERE";
$q .= "c.vendor_id='".$_SESSION['ps_vendor_id']."' ";
$q .= "AND #__{vm}_product.product_publish='Y' ";
$q .= "AND #__{vm}_product.isfront='1' ";
$q .= "AND c.isfront='1' ";
 

После приведенного выше есть и другие запросы, но даже когда я все закомментирую и использую только одно предложение WHERE, ничего не возвращается. Когда я удаляю его, он работает. Весь приведенный ниже код работал, пока я не добавил СОЕДИНЕНИЕ.

Я новичок в использовании объединений, я предполагаю, что что-то в них заставляет WHERE не работать, но, возможно, я просто перепутал код по пути, так что, возможно, лучше обученные глаза могли бы найти здесь проблему?

Заранее спасибо!

Комментарии:

1. это просто уродливо отформатировано. запустите его, распечатав то, что находится внутри переменной q. предпочтительнее включать n для возврата строк

Ответ №1:

В приведенном выше коде у вас нет пробела между WHERE и c.vendor_id . Таким образом, ваш SQL будет выглядеть так: бла-бла-бла WHEREc.vendor_id= бла-бла-бла. Итак, первое, что нужно попробовать, это добавить пробел после WHERE в первой строке.

Если в этой проблеме есть нечто большее, чем пропущенный пробел, пожалуйста, не могли бы вы опубликовать пример фактического SQL в $ q, который выполняется, а не код, используемый для его создания? Ваш код не содержит большого количества защитных мер, таких как addslashes() или mysql_real_escape_string() , поэтому возможно, что там есть что-то неприятное.

Комментарии:

1. Большое вам спасибо, это действительно был этот глупый недосмотр, большое спасибо, что указали на это!