我正在尝试运行一个相当简单的查询,但它似乎完全没有返回结果;
$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。
我是新手使用连接,我猜他们的东西使得WHERE无法正常工作,但也许我只是搞砸了代码,所以也许训练有素的眼睛会在这里找到问题?
提前致谢!
答案 0 :(得分:1)
在上面的代码中,WHERE和c.vendor_id之间没有任何空格。所以你的SQL看起来像:blah blah WHEREc.vendor_id = blah blah。所以首先要尝试的是在第一行的WHERE之后添加一个空格。
如果这个问题比缺少的空间更多,那么请你发布一个正在运行的$ q中的实际SQL的示例,而不是用于生成它的代码吗?你的代码不包含自由的保护措施,如addslashes()或mysql_real_escape_string(),因此可能会有一些令人讨厌的东西。