0

私はイベントプロジェクトに取り組んでおり、ユーザーがホストしているイベントをプロファイルページに表示したいのですが、イベントの一覧表示に行き詰まりました。

他のものはうまく機能しています。

コードは次のとおりです。

if(isset($_GET["id"])) {
$id = intval($_GET["id"]);
if(!empty($id)) {

try {
$pq = "SELECT * FROM `users` WHERE `id` = :id";
$pq_check = $db->prepare($pq);
$pq_check->bindParam(':id', $id, PDO::PARAM_INT);
$pq_check->execute();
$ac = $db->query("SELECT FOUND_ROWS()")->fetchColumn();
} 
catch(PDOException $e) { $log->logError($e." - ".basename(__FILE__));
}


// i'm fetching the user info and showing them name age gender exc. , no problem with here


echo "Events That User Hosted :\n";

// here is the place i have problem

$eq = "SELECT * FROM `events` WHERE `host_id` = :id";
$eq_check = $db->prepare($eq);
$eq_check->bindParam(':id', $id, PDO::PARAM_INT);
$eq_check->execute();
$foo = $db->query("SELECT FOUND_ROWS()")->fetchColumn();
if(!empty($foo)) {
$_loader = true;
$fetch = $eq_check->fetch (PDO::FETCH_ASSOC);
}

while($fetch = $eq_check->fetch (PDO::FETCH_ASSOC) ){ 
if ($fetch == NULL ) {
break;
}

$event_id = $fetch['event_id'];
$event_name = $fetch['event_name'];
$link = "https://www.mywebsite.com/e/$event_id";

echo "<a target=\"_blank\" href=\"$link\"><li>$event_name</li></a>";

} 

}
}

ありがとうございました

4

1 に答える 1

1

1つの問題は、結果セットの最初の行をフェッチしてから、それを破棄することです。

if(!empty($foo)) {
  $_loader = true;
  $fetch = $eq_check->fetch (PDO::FETCH_ASSOC);
}

/* above you have fetched the first row but that value gets overwritten
   directly after that: */

while ($fetch = $eq_check->fetch (PDO::FETCH_ASSOC) ) { 

/* $fetch now contains the second row of the result set, if it exists... */

編集:コードをクリーンアップし、エラー処理を追加して、何が起こるかを確認します:

try
{
  $eq = "SELECT * FROM `events` WHERE `host_id` = :id";
  $eq_check = $db->prepare($eq);
  $eq_check->bindParam(':id', $id, PDO::PARAM_INT);
  $eq_check->execute();

  while($fetch = $eq_check->fetch (PDO::FETCH_ASSOC) )
  { 
    $_loader = true;

    $event_id = $fetch['event_id'];
    $event_name = $fetch['event_name'];
    $link = "https://www.mywebsite.com/e/$event_id";

    echo "<a target=\"_blank\" href=\"$link\"><li>$event_name</li></a>";
  }
} 
catch(PDOException $e)
{
  $log->logError($e." - ".basename(__FILE__));
}
于 2012-09-14T01:34:15.990 に答える