如何在mysql

时间:2015-05-21 08:47:09

标签: php mysql

这是我的表单:我有三个字段按密码,类别和名称搜索。

<form name="f1" action="" method="post">
<input type="text" name="pincode"     id="zipsearch"  value='<?php echo $pincode;?>'  class="buttonlengths" placeholder="Search By pincode,Area,State" required/><br/><br/>
<select name="categorypincode" ize="40" class="buttonlengths" />
<option value="">select the subject</option>
<option value="Class I-V Tuition" <?php  if($categorypincode=='Class I-V Tuition') { echo 'selected'; }?>>Class I-V Tuition</option>
<option value="Class VI-VIII Tuition" <?php  if($categorypincode=='Class VI-VIII Tuition') { echo 'selected'; }?>>Class VI-VIII Tuition</option>
   </select><br/><br/>
<input type="text" name="tutorname" value="<?php echo $tutorname; ?>" class="buttonlengths" placeholder="Search By Tutor Name"/><br/><br/>
<input type="submit" id="tbx2"  name="submitpincode" value="Search"/>
</form>

<?php
     $pincode=$_POST['pincode'];
     $categorypincode=$_POST['categorypincode'];
     $tutorname=$_POST['tutorname'];
     if($pincode!='' &&  $categorypincode!='' &&  $tutorname!='')
    {
    $sql=mysql_query("SELECT  tr.*, t.*  FROM  tinfo  t left join tutorregistration tr  on  tr. tid=t.tsid where pincode LIKE '%$pincode%' and classconducted LIKE '%$categorypincode%' and name LIKE '%$tutorname%'");
    }
    else if($pincode!='' &&  $categorypincode!='' )
    {
    $sql=mysql_query("SELECT  tr.*, t.*  FROM  tinfo  t left join tutorregistration tr  on  tr. tid=t.tsid where pincode LIKE '%$pincode%' and classconducted LIKE '%$categorypincode%'");
    }
    else if($pincode!='')
    {
    $sql=mysql_query("SELECT  tr.*, t.*  FROM  tinfo  t left join tutorregistration tr  on  tr. tid=t.tsid where
    pincode LIKE '%$pincode%'");
    }
?>

注意:          我想在此之前进行分页工作,输出应该提供单个查询。如何连接成单个sql查询。我希望你理解我的疑问         如何处理我将处理的其余事情。他们首先使用pincode搜索,第二次使用pincode搜索,使用categorypincode搜索第三个名称。如果你看到我的话,你可以理解。      接下来我需要在这里做分页。为此我才打破了我的头脑。我的表单中还有五个参数。任何想法如何执行此操作并连接到单个查询。对于示例我已经提供了表单和数据。任何人都可以指导我如何做到这一点?此外,我想知道如何使用分页进行多次搜索。看到总数我给了200条记录。每个页面我需要显示20条记录。 我除了像这样的输出: 显示总共200条记录中的1到2o, 接下来是第二页 它应该显示200的21到40.任何人都可以指导如何首先连接到单个查询然后分页

1 个答案:

答案 0 :(得分:0)

简单,从最简单的查询形式或其默认值开始:...但对于chrissake不要执行它!

$sql = "SELECT  tr.*, t.*  FROM  tinfo  t left join tutorregistration tr  on  tr. tid=t.tsid where pincode LIKE '%$pincode%'";

然后添加其他条件,作为字符串,也不要执行它们。

if($pincode!='' &&  $categorypincode!='' ){
  $sql .= " and classconducted LIKE '%$categorypincode%'");
}

if($pincode!='' &&  $categorypincode!='' &&  $tutorname!=''){
  $sql .= " and name LIKE '%$tutorname%'");
}

注意:我已经删除了if...else if嵌套,根据编号不需要它们(如果第二个为真,则第一个条件永远不能评估为false)。

所以完整的代码是:

<?php
$sql = "SELECT  tr.*, t.*  FROM  tinfo  t left join tutorregistration tr  on  tr. tid=t.tsid where pincode LIKE '%$pincode%'";

if($pincode!='' &&  $categorypincode!='' ){
  $sql .= " and classconducted LIKE '%$categorypincode%'");
}

if($pincode!='' &&  $categorypincode!='' &&  $tutorname!=''){
  $sql .= " and name LIKE '%$tutorname%'");
}

$sql = mysql_query($sql);
?>

构建代码的方式存在一些重大缺陷,安全性明显,并且不能从重新开始。但那不是我的B / S.

编辑:如果您打算进行分页,请使用sql limit。只是指出。