0

我在一个查询中获取两个表结果。现在我在每个表中都有一行name = userid。当我打印表一的 id 时,这不起作用并打印了表二的 id。在即我从产品中选择*,然后voteid,userid形成 voteproduct where userid = $userid ; 现在我需要从产品表中打印用户 ID,但我的结果是从 voteproduct 中打印用户 ID。如何解决这个问题?谢谢

我的代码:

$sql = 'SELECT * FROM ' . PREFIX  . '_product,' . PREFIX  . '_voteproduct WHERE ' . PREFIX  . '_voteproduct.voteid = ' . PREFIX  . '_product.id AND ' . PREFIX  . '_voteproduct.userid =  "' . $userid . '" ORDER BY name ' . $pages->limit .' ';

    $db->query($sql) or error ('ERROR', mysql_error ());
          $result = $db->query ( $sql ); 
          if($db->numrows($result)>0){ 
          while ($row = $db->fetcharray($result))
       {

    echo $row['userid']; // PROBELM THIS PRINTED USERID FROM VOTEPRODUCT I NEED PRINT USER ID FROM PRODUCT
       }

编辑:如果我*从我的产品表中选择,我真的需要全部。(名称、价格、日期、类别……)

4

3 回答 3

3

select *是一种懒惰的做事方式,尤其是当您看起来只要求一个字段时。你不会跑到商店,拿走整个商店的货架库存,把它带回家,然后扔掉除了你想要的一根糖果之外的所有东西。

怎么样

SELECT product.userid
FROM ...
WHERE ...

所以你只得到你需要的确切的单个字段?

于 2012-04-28T14:29:16.973 回答
1

您可以选择每个用户 ID,AS 以便单独使用它们,如下所示

$sql = 'SELECT p.userid as pid, vp.userid as vpid, ... FROM ' . PREFIX  . '_product AS p,' . PREFIX  . '_voteproduct AS vp WHERE vp.voteid = p.id AND vp.userid =  "' . $userid . '" ORDER BY name ' . $pages->limit .' ';

并使用;

echo $row['pid'];
于 2012-04-28T14:31:27.067 回答
1
select p.userid as puserid, v.userid as vuserid ... FROM ' . PREFIX  . '_product p,' . PREFIX  . '_voteproduct v where ...

echo $row['puserid'];
于 2012-04-28T14:33:25.467 回答