MySQL只返回一行(最近一行)

时间:2016-07-27 02:16:00

标签: php mysql web-services

我遇到了一个问题,基本上我只是为了好玩而制作票务系统而且我遇到了一些问题,其中大部分问题都是通过快速谷歌搜索解决的,或者只是搞乱了用它来做一点点。

虽然我无法解决这个问题,基本上当你点击你打开的特定票证时,它会带你到这样的链接: 158.xx.xxx.xxx/site/support?view=ID(35,36,37)。查看页面时,它会显示票证信息,但显示所有三张票证的相同信息。

  $stmt3 = $auth_user->runQuery("SELECT * FROM ticket"); $stmt3->execute();

  if(isset($_GET['view'])){ 
if($stmt3->rowCount()){
  while($r = $stmt3->fetch(PDO::FETCH_OBJ)) {
    $name = $r->name;
    $id3 = $r->id;
    $subject = $r->subject;
    $ticket = $r->ticket_date;
    $desc = $r->body;
    $ticid = $r->ticket_id;
  }
}

if($_GET['view'] == $id3){

echo 
'
<div class="ticket">
    <div class="ticket-date">
        '.$ticket.'
    </div>
    <div class="ticket-name">
        '.$name.'
    </div>
    <div class="ticket-desc">
        '.$desc.'
    </div>
</div>
';

$displayticket = $auth_user->runQuery("SELECT * FROM ticket_replies WHERE ticket_id=:ticid");
$displayticket->execute(array(':ticid'=>$user_id));
$ticketsrow = $displayticket->fetchAll();
$count = count($ticketsrow);
foreach($ticketsrow as $row9){
  echo 
  "
  <br />
  <div class='ticket'>
    <div class='ticket-date'>
    ".$row9['timestamp']."
    </div>
    <div class='ticket-name'>
    ".$row9['uid']."
    </div>
    <div class='ticket-desc'>
    ".$row9['text']."
    </div>
  </div> 

  <br />";
}

echo '
<form method="POST" action="support?view='.$id3.'">
  <textarea id="text" name="addsupportbody"></textarea><br/>
  <input type="submit" name="addsupportcomment" class="btn btn-dark" style="margin-top: 5px;" value="Add Comment">
  <input type="submit" name="closeticket" class="btn btn-danger" value="Close Ticket">
</form>';

if(isset($_POST['addsupportcomment'])){
    $ticketid = $id3;
    $uidc = $user_id;
    $ttext = $_POST['addsupportbody'];

    if($ttext == ""){
        echo "You must enter a comment to send.";
    }else{

      try
      {

        if($auth_user->insertTicketComment($ticketid, $uidc, $ttext)){
            echo "Your comment has been added!";
            header("url=index");
        }
      }
      catch(PDOException $e)
      {
        echo $e->getMessage();
      }

    }
}

}else{
  echo "This page does not exist.";
} }

说到你的意思,我不认为这段代码可以安全地宣传或使用,也不认为它是好的或有组织的。我只是想从自己的错误中吸取教训,并希望在途中获得一些帮助。如果有一些丢失的代码,请告诉我,我会包含它。这段代码对我来说是不正常的。

1 个答案:

答案 0 :(得分:3)

仅选择要显示的故障单。变化

$stmt3 = $auth_user->runQuery("SELECT * FROM ticket"); 

$id = isset($_GET['view'])? (int)$_GET['view']: -1;
$stmt3 = $auth_user->runQuery("SELECT * FROM ticket WHERE id = $id"); 

你的代码存在的问题是你选择了所有的门票,然后你正在循环它们:

while($r = $stmt3->fetch(PDO::FETCH_OBJ))

在循环的每次迭代中,您捕获行中的数据。无论用户想要什么票,循环中的变量总是以最后一行的值结束。相反,你应该只像我之前那样获取你感兴趣的票。如果找到匹配,那就是门票!无需循环。