2011-10-28 10 views
0

오히려 간단한 쿼리를 실행하려고하지만 그것은 결과를 전혀 반환하지 않는 것 같습니다;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 절만 사용하더라도 아무 것도 반환되지 않습니다. 제거하면 작동합니다. 아래 코드는 모두 JOIN을 추가 할 때까지 작동했습니다.

내가 조인을 사용하는 데있어 새로운데, 어째서 작동하지 않는지 추측하고 있지만 어쩌면 단지 코드를 엉망으로 만들었을 것입니다. 따라서 훈련 된 눈으로 인해 문제가 발생할 수 있습니다.

미리 감사드립니다.

+0

이것은 추한 형식입니다. q 변수 안에있는 내용을 인쇄 할 때 실행하십시오. \ n 행을 반환하는 것이 좋습니다. \ n – MarianP

답변

1

위의 코드에서 WHERE와 c.vendor_id 사이에는 공백이 없습니다. 따라서 SQL은 다음과 같이 보일 것입니다. blah blah WHEREc.vendor_id = blah blah. 그래서 첫 번째 시도는 첫 번째 줄에 WHERE 뒤에 공백을 추가하는 것입니다.

누락 된 공간보다이 문제가 더 많은 경우 실제 SQL을 생성하는 데 사용 된 코드가 아닌 실행중인 $ q에 실제 SQL의 예를 게시 할 수 있습니까? 코드에는 addslashes() 나 mysql_real_escape_string()과 같은 보호 수단이 자유롭게 뿌려지지 않아 거기에 더러운 점이있을 수 있습니다.

+0

대단히 감사합니다. 실제로이 바보 같은 감시 였고, 지적 해 주셔서 고맙습니다! – Sherif