2017-06-03 159 views
0

我试图从数据库中获取信息,但查询只运行第一行! 我已经尝试了很多东西,但没有奏效;我不知道为什么。 get方法是由数据库表中填写PDO查询只运行第一次

的问题是,在第一个查询'SELECT CouID FROM CoursesC WHERE StuID = :ID ' 如果我更改查询到'SELECT CouID FROM CoursesC'它工作正常!

我呈现的数据为<select>一个模式

表单代码

<form action="<?php $_SERVER['PHP_SELF']?>" method="GET" id="contact"> 

<table id="studenttable"> 

    <tr> 
    <th></th> 
    <th>Student ID</th> 
    <th>Student Name</th> 
    <th>Student Passed Credits</th> 
    <th>Action</th> 
    </tr> 
    <?php 

    require('check.php'); 
$query = $conn->prepare('SELECT * FROM student WHERE AdvID=:id'); 
$query->bindParam(":id",$_SESSION['userid']); 
$query->execute(); 
$row = $query->fetch(); 

while($row = $query->fetch(PDO::FETCH_ASSOC)){ 
?> 
    <tr> 
    <td> <input type ="checkbox" name="checked[]" value="<?php echo $row['StuId'];?>"> </td> 
    <td><?php echo $row['StuId']; ?></td> 
    <td><?php echo $row['Name']; ?></td> 
    <td> </td> 
    <td> 

    <button type="submit" name="submit" value="<?php echo $row['StuId'];?>" class="btn icon-btn btn-info" ><span class="glyphicon glyphicon-info-sign"></span>More Information</button> 
    </td> 
    </tr>  
<?php 
} 
     do { 
    while ($query->fetch()) 
     ; 
    if (!$query->nextRowset()) 
     break; 
} while (true); 
    $conn=null; 
    $query->closeCursor(); 
?> 

</table> 

</form> 




<?php 
if (isset($_GET['submit'])){ 
    global $CC; 
    $count=1; 
    global $data; 
    $T=$_GET['submit']; 
?> 
<script> 
    $('#CC').html(""); 
    $('#CC1').html(""); 
</script> 
<?php 
    require('check.php'); 
    $q= $conn->prepare('SELECT CouID FROM CoursesC WHERE StuID = :ID '); 
    $q->bindValue(':ID', $_GET['submit']); 
    $q->execute(); 
    $data = $q->fetch(); 
    while($data = $q->fetch(PDO::FETCH_ASSOC)){ 
     $CC=$data['CouID']; 
?> 
<script> 
    $('#CC').append("<option><? echo $count++; echo "- "; echo $CC;?></option>"); 
</script> 
<?php 
    } 
    $q->closeCursor(); 
    $A=$CC; 
    /*echo "<script> alert('<?php $T ?>')";*/ 

    $q1= $conn->prepare('SELECT CouID FROM Courses'); 
    $q1->execute(); 
    $data1 = $q1->fetch(); 
    while($data1 = $q1->fetch(PDO::FETCH_ASSOC)){ 
     if($CC!=$data1['CouID']){ 
?> 
<script> 
    $('#CC1').append("<option><? echo $count++; echo "- "; echo $data1['CouID'];?></option>"); 
</script> 
<?php 
     } 
    } 
    $q1->closeCursor(); 
?> 
<script> 
    $(window).load(function(){ 
     $('#myModal').modal('show'); 
    }); 
</script> 
<? 
} 
?> 
<?php 
    if (isset($_GET['submit'])){ 
     global $CC; 
     $count=1; 
     global $data; 
     $T=$_GET['submit']; 
?> 
<script> 
    $('#CC').html(""); 
    $('#CC1').html(""); 
</script> 
<?php 
     require('check.php'); 
     $q= $conn->prepare('SELECT CouID FROM CoursesC WHERE StuID = :ID '); 
     $q->bindValue(':ID', $_GET['submit']); 
     $q->execute(); 
     $data = $q->fetch(); 
     while($data = $q->fetch(PDO::FETCH_ASSOC)){ 
      $CC=$data['CouID']; 
?> 
<script> 
    $('#CC').append("<option><? echo $count++; echo "- "; echo $CC;?></option>"); 
</script> 
<?php 
     } 
     $q->closeCursor(); 
     $A=$CC; 
     /*echo "<script> alert('<?php $T ?>')";*/ 

     $q1= $conn->prepare('SELECT CouID FROM Courses'); 
     $q1->bindParam(":id", $_GET['submit']); 
     $q1->execute(); 
     $data1 = $q1->fetch(); 
     while($data1 = $q1->fetch(PDO::FETCH_ASSOC)){ 
      if($CC!=$data1['CouID']){ 
?> 
<script> 
    $('#CC1').append("<option><? echo $count++; echo "- "; echo $data1['CouID'];?></option>"); 
</script> 
<?php 
      } 
     } 
     $q1->closeCursor(); 
?> 
<script> 
    $(window).load(function(){ 
     $('#myModal').modal('show'); 
    }); 
</script> 
<? 
    } 
?> 
<?php 
    if (isset($_GET['submit'])){ 
     global $CC; 
     $count=1; 
     global $data; 
     $T=$_GET['submit']; 
    ?> 
    <script> 
    $('#CC').html(""); 
    $('#CC1').html(""); 
    </script> 
    <?php 
    require('check.php'); 
    $q= $conn->prepare('SELECT CouID FROM CoursesC WHERE StuID = :ID '); 
    $q->bindValue(':ID', $_GET['submit']); 
    $q->execute(); 
    $data = $q->fetch(); 
    while($data = $q->fetch(PDO::FETCH_ASSOC)){ 
     $CC=$data['CouID']; 
?> 
<script> 
    $('#CC').append("<option><? echo $count++; echo "- "; echo $CC;?></option>"); 
</script> 
<?php 
    } 
    $q->closeCursor(); 
    $A=$CC; 
    /*echo "<script> alert('<?php $T ?>')";*/ 

    $q1= $conn->prepare('SELECT CouID FROM Courses'); 
    $q1->bindParam(":id", $_GET['submit']); 
    $q1->execute(); 
    $data1 = $q1->fetch(); 
    while($data1 = $q1->fetch(PDO::FETCH_ASSOC)){ 
     if($CC!=$data1['CouID']){ 
?> 
<script> 
    $('#CC1').append("<option><? echo $count++; echo "- "; echo $data1['CouID'];?></option>"); 
</script> 
<?php 
     } 
    } 
    $q1->closeCursor(); 
?> 
<script> 
    $(window).load(function(){ 
     $('#myModal').modal('show'); 
    }); 
</script> 
<? 
} 
?> 
+0

您好,您的问题非常广泛,当您说“查询”时,您需要明确哪些查询,在您的代码中有很多查询。如果你很具体会更容易帮助你。 –

+0

@PabloCesarCordovaMorales对不起,我已更新我的评论它的第一个查询,我认为问题在$ q-> bindValue,因为当我删除它的工作,但我需要它获得用户的价值 –

+0

':ID'和':ID'是两种不同的动物,但你没有用'$ q1 = $ conn-> prepare('SELECT CouID FROM Courses')做任何事情; $ q1-> bindParam(“:id”,$ _GET ['submit']);'在没有绑定,不知道你为什么使用提交作为参考。 –

回答

0

尝试改变这一行内:

$q= $conn->prepare('SELECT CouID FROM CoursesC WHERE StuID = :ID '); 
$q->bindValue(':ID', $_GET['submit']); 

$q= $conn->prepare('SELECT CouID FROM CoursesC WHERE StuID IN(:ID) '); 
$q->bindValue(':ID', implode(",",$_GET['checked'])); 

您的表单正在返回一组ID,而不仅仅是一个,因此您必须使用'IN'而不是'='。

此外,请勿使用<?php $_SERVER['PHP_SELF']?>。使用页面的名称,以防您在项目外进行部署!

+0

我认为你有困惑没有使用“检查”其复选框我使用提交按钮发送它的价值THNX –

+0

是,这是不正确的。 $ _GET变量将已经返回表单元素的数组。我假设你假装检索检查的ID,所以有另一个名为“checked”的数组,这是你给这些元素的名字。检查数组内的每个元素都是一个ID值。 Implode函数将它们转换为SQL语句中可读的字符串。 –

+0

对不起,我想我理解这里的逻辑......如果用户点击按钮,那么发送一个用户ID,对吗?所以我不明白为什么你的查询会返回一个列表,然后如果你正在过滤一个用户ID ... –