2010-05-21 33 views
2

我使用此代码连接到数据库并获取结果。这工作完美,直到我试图在图像表的另一个查询工作,以获得相关的图像。我对OO编程不是很有经验。所以希望有人能看到哪里出了问题并帮助我。在查询其他产品后查询相关图像

<?php 
    global $__CMS_CONN__; 

    $sql = "SELECT * FROM ecom_products"; 
    $stmt = $__CMS_CONN__->prepare($sql); 
    $stmt->execute(array($id)); 

    while ($row = $stmt->fetchObject()) { 

     $imagesql = "SELECT * FROM ecom_product_images where id = $row->id && where primaryImage = '1'"; 
     $imagestmt = $__CMS_CONN__->prepare($sql); 
     $imagestmt->execute(array($id)); 
     $imageName = $imagestmt->fetchObject(); 

     echo '<a href="'.URL_PUBLIC.$row->id.'">'.$row->productNm.'</a>'.$imageName; 

    } 
?> 

回答

0

修改您的SQL查询:

$imagesql = 'SELECT * FROM ecom_product_images where id = ' . $row->id . ' AND primaryImage = "1"'; 

你以前$id变量声明?

你的代码有错误吗?

如果您primaryImage列然后int类型跳过撇号查询

primaryImage = 1 

如果enum那么它是确定。

+0

为什么downvote?这将纠正OP代码中的错误。 +1 – 2010-05-21 11:06:21

+0

这很酷......谢谢你们,我现在就试试它们,直接回到你身边。感谢您的快速响应。 – Andy 2010-05-21 11:09:03

+0

不幸的是这些工作都没有。 – Andy 2010-05-21 12:07:34

0

你不需要面向对象编程,而是SQL。

SELECT p.*, imageName 
FROM ecom_products p, ecom_product_images i 
WHERE p.id = i.id AND primaryImage = 1; 
+0

'LEFT JOIN'在这里不是更好吗? – hsz 2010-05-21 11:08:52