热搜:NVER node 开发 php

PHP如何控制MySQL多条件查询

2024-08-20 18:25:01
PHP如何控制MySQL多条件查询

做了个PHP查询数据库的页面,现在可输入版本号和选择线路查询,选择状态无法使用,页面如下,


目前遇到的问题是,首次打开页面是,自动显示所有数据,并提示了两处错误,需要如何修改,即打开页面是空的,只有点击查询后才显示,第二个问题是如何让“选择状态”生效,选择完成执行SQL1,选择未完成执行SQL2,媒体版本号和线路为必选项,
那位帮改改。

选择状态的代码我是这样写的,可是执行不了,提示语法错误
if %{$_REQUEST['zhuangtai']}%="完成" then
$q = "SELECT * FROM research where banben like '%{$_REQUEST['banben']}%' AND linename like '%{$_REQUEST['xianlu']}%' AND zhuangtai='fin' order by busname asc";   
elseif %{$_REQUEST['zhuangtai']}%="未完成" then
$q = "SELECT * FROM research where banben like '%{$_REQUEST['banben']}%' AND linename like '%{$_REQUEST['xianlu']}%' AND zhuangtai='new' order by busname asc";  


完整代码:
nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


数据查询



 




                 媒体版本号:
                   
选择线路
                 
                 选择状态
                 
                 
                 
                 
        


<?php
$link=mysql_connect("localhost","root","12345678");   
if(!$link) echo "没有连接成功!";   
else echo "连接成功!";   
mysql_select_db("busap", $link);          //选择数据库  

//控制查询条件

//if %{$_REQUEST['zhuangtai']}%="完成" then

$q = "SELECT * FROM research where banben like '%{$_REQUEST['banben']}%' AND linename like '%{$_REQUEST['xianlu']}%' AND zhuangtai='fin' order by busname asc";   
//elseif %{$_REQUEST['zhuangtai']}%="未完成" then
//$q = "SELECT * FROM research where banben like '%{$_REQUEST['banben']}%' AND linename like '%{$_REQUEST['xianlu']}%' AND zhuangtai='new' order by busname asc";  
 
// mysql_query("SET NAMES GB2312"); //防止乱码
$rs = mysql_query($q); //获取数据集
$assoc= mysql_num_rows($rs);///影响的行数 , 原来用了mysql_fetch_assoc
echo "$assoc";

$row=mysql_fetch_array($rs); //只需要补充回这一行. 

if(!$rs){die("Valid result!");}


?>



  
    
    
    
    
    
    
    
    
    
  
  <?php
do { ?>

  
    
    
    
    
    
    
    
    
    

  
  <?php }while($row = mysql_fetch_array($rs)); ?>
线路 中心编号 线路 车辆自编号 传输方式 媒体版本 日期 时间 状态
<?php echo $row[0]; ?> <?php echo $row[1]; ?> <?php echo $row[2]; ?> <?php echo $row[3]; ?> <?php echo $row[4]; ?> <?php echo $row[5]; ?> <?php echo $row[6]; ?> <?php echo $row[7]; ?> <?php echo $row[8]; ?>


回复讨论(解决方案)

$q = "SELECT * FROM research where xianlu = " . $_GET['select']  ,多条件自己加上去就可以了

用. $_GET提示语法错误

现在的新进展是“选择状态“可用,但首次打开页面显示所有内容,并提示3处错误,如何修改打开页面不查询,只有点击查询再查询


完整代码如下:
nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


数据查询



 




                 媒体版本号:
                   
选择线路
                 
                 选择状态
                 
                 
                 
                 
        


<?php
$link=mysql_connect("localhost","root","12345678");   
if(!$link) echo "没有连接成功!";   
else echo "连接成功!";   
mysql_select_db("busap", $link);          //选择数据库  

//控制查询条件

$q = "SELECT * FROM research where banben like '%{$_REQUEST['banben']}%' AND linename like '%{$_REQUEST['xianlu']}%' AND zhuangtai like '%{$_REQUEST['zhuangtai']}%' order by busname asc";   
 
// mysql_query("SET NAMES GB2312"); //防止乱码
$rs = mysql_query($q); //获取数据集
$assoc= mysql_num_rows($rs);///影响的行数 , 原来用了mysql_fetch_assoc
echo "$assoc";

$row=mysql_fetch_array($rs); //只需要补充回这一行. 

if(!$rs){die("Valid result!");}


?>



  
    
    
    
    
    
    
    
    
    
  
  <?php
do { ?>

  
    
    
    
    
    
    
    
    
    

  
  <?php }while($row = mysql_fetch_array($rs)); ?>
线路 中心编号 线路 车辆自编号 传输方式 媒体版本 日期 时间 状态
<?php echo $row[0]; ?> <?php echo $row[1]; ?> <?php echo $row[2]; ?> <?php echo $row[3]; ?> <?php echo $row[4]; ?> <?php echo $row[5]; ?> <?php echo $row[6]; ?> <?php echo $row[7]; ?> <?php echo $row[8]; ?>

nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


数据查询



 




                 媒体版本号:
                   
选择线路
                 
                 选择状态
                 
                 
                 
                 
        


<?php
if($_REQUEST['submit'])
{
$link=mysql_connect("localhost","root","12345678");   
if(!$link) echo "没有连接成功!";   
else echo "连接成功!";   
mysql_select_db("busap", $link);          //选择数据库  

//控制查询条件

$q = "SELECT * FROM research where banben like '%{$_REQUEST['banben']}%' AND linename like '%{$_REQUEST['xianlu']}%' AND zhuangtai like '%{$_REQUEST['zhuangtai']}%' order by busname asc";   
 
// mysql_query("SET NAMES GB2312"); //防止乱码
$rs = mysql_query($q); //获取数据集
$assoc= mysql_num_rows($rs);///影响的行数 , 原来用了mysql_fetch_assoc
echo "$assoc";

$row=mysql_fetch_array($rs); //只需要补充回这一行. 

if(!$rs){die("Valid result!");}
}

?>
 <?if ($_REQUEST['submit']):?>


  
    
    
    
    
    
    
    
    
    
  
  <?php
do { ?>

  
    
    
    
    
    
    
    
    
    

  
  <?php }while($row = mysql_fetch_array($rs)); ?>
线路 中心编号 线路 车辆自编号 传输方式 媒体版本 日期 时间 状态
<?php echo $row[0]; ?> <?php echo $row[1]; ?> <?php echo $row[2]; ?> <?php echo $row[3]; ?> <?php echo $row[4]; ?> <?php echo $row[5]; ?> <?php echo $row[6]; ?> <?php echo $row[7]; ?> <?php echo $row[8]; ?>

<?endif ;>

$q = "SELECT * FROM research where banben like '%{$_REQUEST['banben']}%' AND linename like '%{$_REQUEST['xianlu']}%' AND zhuangtai like '%{$_REQUEST['zhuangtai']}%' order by busname asc";   

对$_REQUEST['banben'],$_REQUEST['xianlu'],$_REQUEST['zhuangtai']做相应的判断
如:
$sqlstr = "";
if (!empty($_REQUEST['banben'])){
    $sqlstr = " and banben like '%{$_REQUEST['banben']}%' ";
}
if (!empty($_REQUEST['xianlu'])){
    $sqlstr .= " linename like '%{$_REQUEST['xianlu']}%' ";
}
同理$_REQUEST['zhuangtai']

$q = "SELECT * FROM research where  1 = 1  $sqlstr  order by busname asc";   

if (!empty($_REQUEST['xianlu'])){
    $sqlstr .= " and linename like '%{$_REQUEST['xianlu']}%' ";
}

现在问题基本都解决啦,但运行出一个错误,但还不耽误用,怎么能让他不显示啊



第81行代码是:   <?php }while($row=mysql_fetch_array($rs)); ?>



完整代码如下:
nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
 


 数据查询
 
 

 

 


 


                  媒体版本号:
                   
选择线路
                 
                  选择状态
                 
                  
                  
                  
         
 

 <?php
 if($_REQUEST['submit']!="")
 {
 $link=mysql_connect("127.0.0.1","root","12345678");   
 if(!$link) echo "没有连接成功!";   
else echo "连接成功!";   
mysql_select_db("busap", $link);          //选择数据库  

 //控制查询条件

$q = "SELECT * FROM research where banben like '%{$_REQUEST['banben']}%' AND linename like '%{$_REQUEST['xianlu']}%' AND zhuangtai like '%{$_REQUEST['zhuangtai']}%' order by busname asc";   
  
 // mysql_query("SET NAMES GB2312"); //防止乱码
$rs = mysql_query($q); //获取数据集
$assoc= mysql_num_rows($rs);///影响的行数 , 原来用了mysql_fetch_assoc
 echo "$assoc"; 

 $row=mysql_fetch_array($rs); //只需要补充回这一行. 

if(!$rs){die("Valid result!");}
 }
 ?>
 

   
     
     
     
     
     
     
     
     
     
   
   <?php
 do { ?>

   
     
     
     
     
     
     
     
     
     

   
   <?php }while($row=mysql_fetch_array($rs)); ?>
 
线路 中心编号 线路 车辆自编号 传输方式 媒体版本 日期 时间 状态
<?php echo $row[0]; ?> <?php echo $row[1]; ?> <?php echo $row[2]; ?> <?php echo $row[3]; ?> <?php echo $row[4]; ?> <?php echo $row[5]; ?> <?php echo $row[6]; ?> <?php echo $row[7]; ?> <?php echo $row[8]; ?>

  

mysql_fetch_array加个判断就可以了

怎么加判断,新手,不会