PHP如何控制MySQL多条件查询

liucheng1515 2014-10-06 01:54:15
做了个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";


完整代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>数据查询</title>
</head>
<body>

<p> </p>
<form>

<div align="center">媒体版本号:
<input name="banben" type="text" size="10" maxlength="5">
选择线路
<select name="xianlu">
<option>0213</option>
<option>0203</option>
<option>0225</option>
<option>0214</option>
<option>0207</option>
</select>
选择状态
<select name="zhuangtai">
<option selected="selected">完成</option>
<option>未完成</option>
</select>
<label></label>
<input type="submit" name="submit" value="查询" />
</div>

</form>

<?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!");}


?>

<table width="100%" border="1" align="center">

<tr>
<td width="10%"><div align="center">线路</div></td>
<td width="10%"><div align="center">中心编号</div></td>
<td width="10%"><div align="center">线路</div></td>
<td width="10%"><div align="center">车辆自编号</div></td>
<td width="10%"><div align="center">传输方式</div></td>
<td width="10%"><div align="center">媒体版本</div></td>
<td width="10%"><div align="center">日期</div></td>
<td width="10%"><div align="center">时间</div></td>
<td width="10%"><div align="center">状态</div></td>
</tr>
<?php
do { ?>

<tr>
<td width="10%"><div align="center"><?php echo $row[0]; ?></div></td>
<td width="10%"><div align="center"><?php echo $row[1]; ?></div></td>
<td width="10%"><div align="center"><?php echo $row[2]; ?></div></td>
<td width="10%"><div align="center"><?php echo $row[3]; ?></div></td>
<td width="10%"><div align="center"><?php echo $row[4]; ?></div></td>
<td width="10%"><div align="center"><?php echo $row[5]; ?></div></td>
<td width="10%"><div align="center"><?php echo $row[6]; ?></div></td>
<td width="10%"><div align="center"><?php echo $row[7]; ?></div></td>
<td width="10%"><div align="center"><?php echo $row[8]; ?></div></td>

</tr>
<?php }while($row = mysql_fetch_array($rs)); ?>
</table>
</html>
...全文
421 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liucheng1515 2014-10-07
  • 打赏
  • 举报
回复
怎么加判断,新手,不会
小峰峰峡 2014-10-07
  • 打赏
  • 举报
回复
mysql_fetch_array加个判断就可以了
liucheng1515 2014-10-07
  • 打赏
  • 举报
回复
现在问题基本都解决啦,但运行出一个错误,但还不耽误用,怎么能让他不显示啊 第81行代码是: <?php }while($row=mysql_fetch_array($rs)); ?> 完整代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>数据查询</title> </head> <body> <p> </p> <form> <div align="center">媒体版本号: <input name="banben" type="text" size="10" maxlength="5"> 选择线路 <select name="xianlu"> <option>0213</option> <option>0203</option> <option>0225</option> <option>0214</option> <option>0207</option> </select> 选择状态 <select name="zhuangtai"> <option value="fin" selected="selected">完成</option> <option value="new">未完成</option> </select> <label></label> <input type="submit" name="submit" value="查询" /> </div> </form> <?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!");} } ?> <table width="100%" border="1" align="center"> <tr> <td width="10%"><div align="center">线路</div></td> <td width="10%"><div align="center">中心编号</div></td> <td width="10%"><div align="center">线路</div></td> <td width="10%"><div align="center">车辆自编号</div></td> <td width="10%"><div align="center">传输方式</div></td> <td width="10%"><div align="center">媒体版本</div></td> <td width="10%"><div align="center">日期</div></td> <td width="10%"><div align="center">时间</div></td> <td width="10%"><div align="center">状态</div></td> </tr> <?php do { ?> <tr> <td width="10%"><div align="center"><?php echo $row[0]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[1]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[2]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[3]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[4]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[5]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[6]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[7]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[8]; ?></div></td> </tr> <?php }while($row=mysql_fetch_array($rs)); ?> </table> </html>
码无边 2014-10-06
  • 打赏
  • 举报
回复
if (!empty($_REQUEST['xianlu'])){ $sqlstr .= " and linename like '%{$_REQUEST['xianlu']}%' "; }
码无边 2014-10-06
  • 打赏
  • 举报
回复
$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";
小峰峰峡 2014-10-06
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>数据查询</title> </head> <body> <p> </p> <form> <div align="center">媒体版本号: <input name="banben" type="text" size="10" maxlength="5"> 选择线路 <select name="xianlu"> <option>0213</option> <option>0203</option> <option>0225</option> <option>0214</option> <option>0207</option> </select> 选择状态 <select name="zhuangtai"> <option value="fin" selected="selected">完成</option> <option value="new">未完成</option> </select> <label></label> <input type="submit" name="submit" value="查询" /> </div> </form> <?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']):?> <table width="100%" border="1" align="center"> <tr> <td width="10%"><div align="center">线路</div></td> <td width="10%"><div align="center">中心编号</div></td> <td width="10%"><div align="center">线路</div></td> <td width="10%"><div align="center">车辆自编号</div></td> <td width="10%"><div align="center">传输方式</div></td> <td width="10%"><div align="center">媒体版本</div></td> <td width="10%"><div align="center">日期</div></td> <td width="10%"><div align="center">时间</div></td> <td width="10%"><div align="center">状态</div></td> </tr> <?php do { ?> <tr> <td width="10%"><div align="center"><?php echo $row[0]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[1]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[2]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[3]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[4]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[5]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[6]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[7]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[8]; ?></div></td> </tr> <?php }while($row = mysql_fetch_array($rs)); ?> </table> <?endif;> </html>
liucheng1515 2014-10-06
  • 打赏
  • 举报
回复
现在的新进展是“选择状态“可用,但首次打开页面显示所有内容,并提示3处错误,如何修改打开页面不查询,只有点击查询再查询 完整代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>数据查询</title> </head> <body> <p> </p> <form> <div align="center">媒体版本号: <input name="banben" type="text" size="10" maxlength="5"> 选择线路 <select name="xianlu"> <option>0213</option> <option>0203</option> <option>0225</option> <option>0214</option> <option>0207</option> </select> 选择状态 <select name="zhuangtai"> <option value="fin" selected="selected">完成</option> <option value="new">未完成</option> </select> <label></label> <input type="submit" name="submit" value="查询" /> </div> </form> <?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!");} ?> <table width="100%" border="1" align="center"> <tr> <td width="10%"><div align="center">线路</div></td> <td width="10%"><div align="center">中心编号</div></td> <td width="10%"><div align="center">线路</div></td> <td width="10%"><div align="center">车辆自编号</div></td> <td width="10%"><div align="center">传输方式</div></td> <td width="10%"><div align="center">媒体版本</div></td> <td width="10%"><div align="center">日期</div></td> <td width="10%"><div align="center">时间</div></td> <td width="10%"><div align="center">状态</div></td> </tr> <?php do { ?> <tr> <td width="10%"><div align="center"><?php echo $row[0]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[1]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[2]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[3]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[4]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[5]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[6]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[7]; ?></div></td> <td width="10%"><div align="center"><?php echo $row[8]; ?></div></td> </tr> <?php }while($row = mysql_fetch_array($rs)); ?> </table> </html>
liucheng1515 2014-10-06
  • 打赏
  • 举报
回复
用. $_GET提示语法错误
小峰峰峡 2014-10-06
  • 打赏
  • 举报
回复
$q = "SELECT * FROM research where xianlu = " . $_GET['select'] ,多条件自己加上去就可以了

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧