php代码while while循环表只返回空行

时间:2013-08-17 11:19:10

标签: php mysql sql

 <?php

$batchcourseid = $_POST['batchcourseid'];
$coursestatus = $_POST['coursestatus'];
$batchname = $_POST['batchname'];



$conn=mysql_connect("localhost","root","qwerty");
mysql_select_db("MIS");
$sql=("SELECT * from batch where CourseID = '$batchcourseid' AND BatchName LIKE '%$batchname%'");

$results = mysql_query($sql, $conn);

?>
<table width="1070" height="54" border="1">
  <tr>
    <td height="23">BatchID</td>
    <td>CourseID</td>
    <td>Batch Name</td>
    <td>Number Of Students</td>
    <td>Start Date</td>
    <td>End Date</td>
    </tr>
  <?php  while($row = mysql_fetch_array($results)) ?>
  <?php { ?>
  <tr>
    <td height="23"><?php echo $row['BatchID'] ?>&nbsp;</td>
    <td><?php echo $row['CourseID']; ?>&nbsp;</td>
    <td><?php echo $row['BatchName']; ?>&nbsp;</td>
    <td><?php echo $row['NumStud']; ?>&nbsp;</td>
    <td><?php echo $row['StartDate']; ?>&nbsp;</td>
    <td><?php echo $row['EndDate']; ?>&nbsp;</td>
    </tr>
    <?php } ?>

这段代码应该在一个表中给出一行。但它只是出现的空行。我做错了什么? 所有列和文本都存在

6 个答案:

答案 0 :(得分:3)

%必须是LIKE字符串的一部分,因此它应该在'之间,而不是之前/之后:

BatchName LIKE '%$batchname%'"

答案 1 :(得分:2)

喜欢应该写成如下:

LIKE '%$batchname%'

%应该在引号内。

答案 2 :(得分:2)

在您选择的查询中,请检查操作符%

$sql=("SELECT * from batch where CourseID = ".$batchcourseid." AND BatchName LIKE '%".$batchname."%' ");

答案 3 :(得分:1)

%放在文本('%".$batchname."%')中:

$sql="SELECT * from batch where CourseID = '".$batchcourseid"' ".
         "AND BatchName LIKE '%".$batchname."%'";

根据您的环境,您应该了解SQL injections。所以你可能宁愿使用bind variables

$sql="SELECT * from batch where CourseID = ? AND BatchName LIKE ?";

将第一个参数设置为$batchname,将第二个参数设置为"%".$batchname."%"

答案 4 :(得分:1)

在文本中使用%: -

$sql=("SELECT * from batch where CourseID = '$batchcourseid' 
AND BatchName LIKE '%$batchname%'");

而不是

$sql=("SELECT * from batch where CourseID = '$batchcourseid' 
AND BatchName LIKE %'$batchname'%");

在问题更新后编辑:

 $sql=("SELECT * from batch where CourseID = ".$batchcourseid." AND BatchName LIKE '%".$batchname."%'

答案 5 :(得分:0)

$sql=("SELECT * from batch where CourseID = '$batchcourseid' AND BatchName LIKE %'$batchname'%");

将其更改为

$sql="SELECT * from batch where CourseID = '$batchcourseid' AND BatchName LIKE '%$batchname%'";