代码之家  ›  专栏  ›  技术社区  ›  Nick Woodhams

在另一个mysql命令中使用一个mysql命令的结果?

  •  2
  • Nick Woodhams  · 技术社区  · 16 年前

    请原谅我的无知,但我很难弄清楚。

    我尝试从一个mysql命令中获取结果,并在另一个命令中使用它。

    这是我的代码,它不起作用。

    //select the event end date of event ID
    $sql = "SELECT enddate FROM mm_eventlist_dates WHERE id = $id";
    $result = mysql_query($sql);
    
    //plug in the event end date, find event that starts the next day
    $sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add($result, INTERVAL 1 DAY)";
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    echo "Next Event ID" . $row['id'];
    

    我迷路了。

    请帮助!

    谢谢,Nick

    7 回复  |  直到 16 年前
        1
  •  2
  •   Jay    16 年前

    如果我理解你想要完成的事情,你会发现所有的事情都是在一个特定的事件后一天开始的。对的?在这种情况下,您要做的是一个自连接,即将一个表连接到它自己。您需要为表中的至少一个实例提供别名,以便SQL能够区分它们。

    所以可能是这样:

    SELECT e2.id
    FROM mm_eventlist_dates e1
    join mm_eventlist_dates e2 on e2.startdate = date_add(e1.enddate, INTERVAL 1 DAY)
    where e1.id=$id
    
        2
  •  1
  •   JamesMLV    16 年前

    是否有原因不能将它们组合到一个查询中?

    SELECT m1.id FROM mm_eventlist_dates m1  
    JOIN mm_eventlist_dates m2 ON m1.startdate = date_add(m2.enddate, INTERVAL 1 DAY)  
    WHERE m2.id = $id
    
        3
  •  0
  •   richsage    16 年前

    mysql_query()返回结果集,而不是实际的数据库项。要执行上述操作,请执行类似的操作(不包括错误检查等):

    //select the event end date of event ID
    $sql = "SELECT enddate FROM mm_eventlist_dates WHERE id = $id";
    $result = mysql_query($sql);
    
    $enddateRow = mysql_fetch_array($result);
    
    //plug in the event end date, find event that starts the next day
    $sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add('" . $enddateRow["enddate"] . "', INTERVAL 1 DAY)";
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    echo "Next Event ID" . $row['id'];
    
        4
  •  0
  •   Sam    16 年前

    您不能在日期添加中直接使用$result。调用mysql_fetch_array(稍后再做几行),并使用$row['enddate']。

        5
  •  0
  •   Nir Levy    16 年前
    //select the event end date of event ID
    $sql = "SELECT enddate FROM mm_eventlist_dates WHERE id = $id";
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    $enddate = $row['enddate'];
    
    //plug in the event end date, find event that starts the next day
    $sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add($enddate, INTERVAL 1 DAY)";
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    echo "Next Event ID" . $row['id'];
    

    我想

        6
  •  0
  •   Anti Veeranna    16 年前

    不能在另一个查询中直接使用mysql_查询的结果,需要先获取值。

    而不是

    $result = mysql_query($sql);
    
    //plug in the event end date, find event that starts the next day
    $sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add($result, INTERVAL 1 DAY)";
    

    尝试

       $result = mysql_query($sql);
       $enddate = mysql_fetch_assoc($result);
    
        //plug in the event end date, find event that starts the next day
        $sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add($enddate, INTERVAL 1 DAY)";
    
        7
  •  0
  •   RRUZ    16 年前

    试试这个

    //select the event end date of event ID
    $sql = "SELECT enddate FROM mm_eventlist_dates WHERE id = $id";
    $result = mysql_query($sql);
    
    $row = mysql_fetch_assoc($result)
    //plug in the event end date, find event that starts the next day
    $sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add(".$row['enddate'].", INTERVAL 1 DAY)";
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    echo "Next Event ID" . $row['id'];
    
    推荐文章