PHP:while循环如何实现这一点
我希望创建一个“Previous events:…..”,在这里它捕获日期早于现在的事件()PHP:while循环如何实现这一点,php,pdo,while-loop,Php,Pdo,While Loop,我希望创建一个“Previous events:…..”,在这里它捕获日期早于现在的事件()where dateunix\u timestamp(now()) 我说到这里: $grabEvents = $connect->prepare("SELECT eID FROM discos_events_guests WHERE uID =:user"); $grabEvents->bindValue(":user", $profile_id); $grabEvents->execu
where date
和即将到来的事件:在这里它捕获日期晚于当前日期的事件date>unix\u timestamp(now())
我说到这里:
$grabEvents = $connect->prepare("SELECT eID FROM discos_events_guests WHERE uID =:user");
$grabEvents->bindValue(":user", $profile_id);
$grabEvents->execute();
if($grabEvents->rowCount()>0){
echo "<strong>Previous events:</strong><br>";
while($event = $grabEvents->fetch()){
$eID = $event["eID"];
$grabEvent = $connect->prepare("SELECT title FROM discos_events WHERE id=:eid AND date < unix_timestamp(NOW())");
$grabEvent->bindValue(":eid", $eID);
$grabEvent->execute();
$grabEvent = $grabEvent->fetch();
echo $grabEvent["title"]."<br>";
}
}
$grabEvents=$connect->prepare(“从discos\u events\u来宾中选择eID,其中uID=:user”);
$grabEvents->bindValue(“:user”,$profile\u id);
$grabEvents->execute();
如果($grabEvents->rowCount()>0){
回显“以前的事件:
”;
而($event=$grabEvents->fetch()){
$eID=$event[“eID”];
$grabEvent=$connect->prepare(“从discos_事件中选择标题,其中id=:eid和日期bindValue(“:eid”,$eid);
$grabEvent->execute();
$grabEvent=$grabEvent->fetch();
echo$grabEvent[“title”]。“
”;
}
}
效果很好,并且很好地抓住了以前的事件。那么,在这段代码中,我应该如何抓住即将到来的事件呢?我试着在while内进行另一个查询,但结果却一团糟,因为它检查了两个,是的,结果并不是我所希望的
我该怎么做呢?我可能会启动另一个循环,比如:
$grabEvents = $connect->prepare("SELECT eID FROM discos_events_guests WHERE uID =:user");
$grabEvents->bindValue(":user", $profile_id);
$grabEvents->execute();
if($grabEvents->rowCount()>0){
echo "<strong>Previous events:</strong><br>";
while($event = $grabEvents->fetch()){
$eID = $event["eID"];
$grabEvent = $connect->prepare("SELECT title FROM discos_events WHERE id=:eid AND date < unix_timestamp(NOW())");
$grabEvent->bindValue(":eid", $eID);
$grabEvent->execute();
$grabEvent = $grabEvent->fetch();
echo $grabEvent["title"]."<br>";
}
echo "<strong>Upcoming Events:</strong><br>";
while($event = $grabEvents->fetch()){
$eID = $event["eID"];
$grabEvent = $connect->prepare("SELECT title FROM discos_events WHERE id=:eid AND date > unix_timestamp(NOW())");
$grabEvent->bindValue(":eid", $eID);
$grabEvent->execute();
$grabEvent = $grabEvent->fetch();
echo $grabEvent["title"]."<br>";
}
}
$grabEvents=$connect->prepare(“从discos\u events\u来宾中选择eID,其中uID=:user”);
$grabEvents->bindValue(“:user”,$profile\u id);
$grabEvents->execute();
如果($grabEvents->rowCount()>0){
回显“以前的事件:
”;
而($event=$grabEvents->fetch()){
$eID=$event[“eID”];
$grabEvent=$connect->prepare(“从discos_事件中选择标题,其中id=:eid和日期bindValue(“:eid”,$eid);
$grabEvent->execute();
$grabEvent=$grabEvent->fetch();
echo$grabEvent[“title”]。“
”;
}
回声“即将到来的事件:
”;
而($event=$grabEvents->fetch()){
$eID=$event[“eID”];
$grabEvent=$connect->prepare(“从discos_事件中选择标题,其中id=:eid和日期>unix_时间戳(NOW())”;
$grabEvent->bindValue(“:eid”,$eid);
$grabEvent->execute();
$grabEvent=$grabEvent->fetch();
echo$grabEvent[“title”]。“
”;
}
}
至少,如果我正确理解你的问题。我可能会开始另一个循环,比如:
$grabEvents = $connect->prepare("SELECT eID FROM discos_events_guests WHERE uID =:user");
$grabEvents->bindValue(":user", $profile_id);
$grabEvents->execute();
if($grabEvents->rowCount()>0){
echo "<strong>Previous events:</strong><br>";
while($event = $grabEvents->fetch()){
$eID = $event["eID"];
$grabEvent = $connect->prepare("SELECT title FROM discos_events WHERE id=:eid AND date < unix_timestamp(NOW())");
$grabEvent->bindValue(":eid", $eID);
$grabEvent->execute();
$grabEvent = $grabEvent->fetch();
echo $grabEvent["title"]."<br>";
}
echo "<strong>Upcoming Events:</strong><br>";
while($event = $grabEvents->fetch()){
$eID = $event["eID"];
$grabEvent = $connect->prepare("SELECT title FROM discos_events WHERE id=:eid AND date > unix_timestamp(NOW())");
$grabEvent->bindValue(":eid", $eID);
$grabEvent->execute();
$grabEvent = $grabEvent->fetch();
echo $grabEvent["title"]."<br>";
}
}
$grabEvents=$connect->prepare(“从discos\u events\u来宾中选择eID,其中uID=:user”);
$grabEvents->bindValue(“:user”,$profile\u id);
$grabEvents->execute();
如果($grabEvents->rowCount()>0){
回显“以前的事件:
”;
而($event=$grabEvents->fetch()){
$eID=$event[“eID”];
$grabEvent=$connect->prepare(“从discos_事件中选择标题,其中id=:eid和日期bindValue(“:eid”,$eid);
$grabEvent->execute();
$grabEvent=$grabEvent->fetch();
echo$grabEvent[“title”]。“
”;
}
回声“即将到来的事件:
”;
而($event=$grabEvents->fetch()){
$eID=$event[“eID”];
$grabEvent=$connect->prepare(“从discos_事件中选择标题,其中id=:eid和日期>unix_时间戳(NOW())”;
$grabEvent->bindValue(“:eid”,$eid);
$grabEvent->execute();
$grabEvent=$grabEvent->fetch();
echo$grabEvent[“title”]。“
”;
}
}
至少,如果我正确理解了您的问题。首先,您需要优化查询,而不是在while循环中重复查询,请执行以下操作:
SELECT deg.eID, de.title
FROM discos_events_guests deg
JOIN discos_events de on de.id = deg.eID
WHERE uID =:user
AND date < unix_timestamp(NOW())
选择deg.eID,de.title
来自迪斯科舞厅的活动
在de.id=deg.eID上加入迪斯科舞厅活动
其中uID=:user
日期
例如,要获取上一个,您可以执行以下操作:
$grabEvents = $connect->prepare("SELECT de.title
FROM discos_events_guests deg
JOIN discos_events de on de.id = deg.eID
WHERE uID =:user
AND date < unix_timestamp(NOW())");
$grabEvents->bindValue(":user", $profile_id);
$grabEvents->execute();
if($grabEvents->rowCount()>0){
while($event = $grabEvents->fetch()){
echo $event["title"]."<br>";
}
}
$grabEvents=$connect->prepare(“选择de.title
来自迪斯科舞厅的活动
在de.id=deg.eID上加入迪斯科舞厅活动
其中uID=:user
日期bindValue(“:user”,$profile\u id);
$grabEvents->execute();
如果($grabEvents->rowCount()>0){
而($event=$grabEvents->fetch()){
echo$event[“title”]。“
”;
}
}
然后对即将到来的查询再次执行相同的操作:
$grabEvents = $connect->prepare("SELECT de.title
FROM discos_events_guests deg
JOIN discos_events de on de.id = deg.eID
WHERE uID =:user
AND date > unix_timestamp(NOW())");
$grabEvents->bindValue(":user", $profile_id);
$grabEvents->execute();
if($grabEvents->rowCount()>0){
while($event = $grabEvents->fetch()){
echo $event["title"]."<br>";
}
}
$grabEvents=$connect->prepare(“选择de.title
来自迪斯科舞厅的活动
在de.id=deg.eID上加入迪斯科舞厅活动
其中uID=:user
和date>unix_时间戳(NOW())”;
$grabEvents->bindValue(“:user”,$profile\u id);
$grabEvents->execute();
如果($grabEvents->rowCount()>0){
而($event=$grabEvents->fetch()){
echo$event[“title”]。“
”;
}
}
首先,您需要优化查询,而不是在while循环中重复查询,请执行以下操作:
SELECT deg.eID, de.title
FROM discos_events_guests deg
JOIN discos_events de on de.id = deg.eID
WHERE uID =:user
AND date < unix_timestamp(NOW())
选择deg.eID,de.title
来自迪斯科舞厅的活动
在de.id=deg.eID上加入迪斯科舞厅活动
其中uID=:user
日期
例如,要获取上一个,您可以执行以下操作:
$grabEvents = $connect->prepare("SELECT de.title
FROM discos_events_guests deg
JOIN discos_events de on de.id = deg.eID
WHERE uID =:user
AND date < unix_timestamp(NOW())");
$grabEvents->bindValue(":user", $profile_id);
$grabEvents->execute();
if($grabEvents->rowCount()>0){
while($event = $grabEvents->fetch()){
echo $event["title"]."<br>";
}
}
$grabEvents=$connect->prepare(“选择de.title
来自迪斯科舞厅的活动
在de.id=deg.eID上加入迪斯科舞厅活动
其中uID=:user
日期bindValue(“:user”,$profile\u id);
$grabEvents->execute();
如果($grabEvents->rowCount()>0){
而($event=$grabEvents->fetch()){
echo$event[“title”]。“
”;
}
}
然后对即将到来的查询再次执行相同的操作:
$grabEvents = $connect->prepare("SELECT de.title
FROM discos_events_guests deg
JOIN discos_events de on de.id = deg.eID
WHERE uID =:user
AND date > unix_timestamp(NOW())");
$grabEvents->bindValue(":user", $profile_id);
$grabEvents->execute();
if($grabEvents->rowCount()>0){
while($event = $grabEvents->fetch()){
echo $event["title"]."<br>";
}
}
$grabEvents=$connect->prepare(“选择de.title
来自迪斯科舞厅的活动
在de.id=deg.eID上加入迪斯科舞厅活动
其中uID=:user
和date>unix_时间戳(NOW())”;
$grabEvents->bindValue(“:user”,$profile\u id);
$grabEvents->execute();
如果($grabEvents->rowCount()>0){
而($event=$grabEvents->fetch()){
echo$event[“title”]。“
”;
}
}
我想你应该在对数据库的一次查询中完成这项工作。我想你应该在对数据库的一次查询中完成这项工作。尽管@Treffynnon是正确的,但查询应该得到优化。1次获得1000个结果比1000次获得1个结果更有效。如果金额很小,您可能不需要