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

Php 在另一个Mysql命令中使用一个Mysql命令的结果?,php,mysql,Php,Mysql,请原谅我的无知,但我很难弄明白这一点 我试图从一个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

请原谅我的无知,但我很难弄明白这一点

我试图从一个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

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


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

//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'];

我想

有什么原因不能将它们合并到一个查询中吗

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

您不能在其他查询中直接使用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)";
试一试

试试这个

//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'];

如果我了解您要完成的任务,那么您似乎希望找到从给定事件的第二天开始的所有事件。对的在这种情况下,您要做的是自连接,即将表连接到自身。您需要为表中至少一个匹配项提供别名,以便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

啊,我看到在我打开这个屏幕和我发布答案之间,詹姆斯吕夫发布了一个几乎相同的答案。聪明人,那个詹姆斯洛。他的问题对我来说不起作用。你说得更详细了。谢谢你的帮助。
//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'];
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