从多个表中选择行失败

时间:2015-01-26 11:50:32

标签: php mysql

我有以下代码。

我已经尝试过搜索选项中的一些骚动,但没有任何帮助。

所有表都有一行名为:user_id,其中包含数据,但查询仍然提供false $user变量的值为29,在我的表中如下所示:

+---------+---------+-------+-----------+
+ id      | user_id | jaar  + kenmerk   |
+---------+---------+-------+-----------+
+ 1       | 29      | 2015  + standaard |
+---------+---------+-------+-----------+



    $query = "SELECT buitenklimaat.user_id, kasklimaat.user_id, watermangement.user_id, energie.user_id FROM buitenklimaat, kasklimaat, watermangement, energie WHERE user_id = ".$user." AND kenmerk = 'standaard' AND jaar = ".date("Y")."";

    $result = mysqli_query($conn, $query);

    if($result === false) {
        echo 'Query failed';
        die();
    }
    else {
         // do something
    }

2 个答案:

答案 0 :(得分:3)

如果字段user_id存在于多个表中,则还需要在where子句中为字段添加前缀。否则,您的数据库将不知道它应该在哪个表中查找user_id字段。但即使您修复此错误后,查询可能也不会返回您想要的内容。看看一些涵盖连接语法的SQL教程。

    $query = "SELECT buitenklimaat.user_id, kasklimaat.user_id, watermangement.user_id, energie.user_id FROM buitenklimaat, kasklimaat, watermangement, energie WHERE <TABLENAME MISSING>.user_id = ".$user." AND kenmerk = 'standaard' AND jaar = ".date("Y")."";

答案 1 :(得分:0)

您可能需要将所有这些表连接在一起以使user_id条件正常工作:

$query = "SELECT buitenklimaat.user_id, kasklimaat.user_id, 
  watermangement.user_id, energie.user_id FROM buitenklimaat, kasklimaat, 
  watermangement, energie
WHERE buitenklimaat.user_id = kasklimaat.user_id 
  AND buitenklimaat.user_id = watermangement.user_id
  AND buitenklimaat.user_id = energie .user_id 
  AND buitenklimaat.user_id = ".$user." AND kenmerk = 'standaard' 
  AND jaar = ".date("Y")."";