#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. Большое вам спасибо, это действительно был этот глупый недосмотр, большое спасибо, что указали на это!