Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:while循环如何实现这一点_Php_Pdo_While Loop - Fatal编程技术网

PHP:while循环如何实现这一点

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

我希望创建一个“Previous events:…..”,在这里它捕获日期早于现在的事件()
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个结果更有效。如果金额很小,您可能不需要