php mysql 实现一个站内搜索 两个表查询多条记录语句怎么写 谢谢

表一 : insecticide
字段:ID PTN AI AMW
表二 : crop (ID 和 PTN 是表一insecticide中的ID 和 PTN)
字段:ID PTN CROP PEST
想要实现:

1) 在 index.php中,给出任一字段进行搜索,就显示出满足那一字段的所有信息。
2) 若给出 PTN 和crop, 那要满足表一insecticide中PTN 为 $_POST['TN'] 并且表二crop中 PTN 也为 $_POST['TN'] ,表一表二的ID也要相同。
表二crop中的CROP 为$_POST['Crops']
并且要满足表一中 AMW like '%".$_POST['AMW']."%'
(若index.php中 AMW 的textarea填了要搜索的信息)

表二中 PEST like '%".$_POST['PEST']."%'
(若index.php中 PEST 的textarea填了要搜索的信息)

显示满足所有条件的记录。
谢谢了!

$tn = $_POST['TN']?$_POST['TN']:'';
$crops = $_POST['Crops']?$_POST['Crops']:'';
$amw = $_POST['AMW']?$_POST['AMW']:'';
$pest = $_POST['PEST']?$_POST['PEST']:'';

// 把×换成你要查找的字段,post值需要过滤,加强安全性

$sql = "select * from insecticide a left join crop b on a.ID=b.ID where a.PTN like'%$tn%' and b.CROP like'%$crops%' and a.AMW like'%$amw%' and b.PEST like'%$pest%'";追问

1) $tn = $_POST['TN']?$_POST['TN']:''; 这我看不懂啊,问号是什么意思,还有后面的:又代表什么呢?
2) 我能否在表单中控制想要输出的结果。比如我搜满足tn为** ai为***的,我想在result的表格里,只打印tn, ai, 和ptn (不是固定的,每次打印的结果,都是用户自定义的)。这该怎么写呢。 我刚自学php。。很多东西自己琢磨不明白。谢谢啊啊!

追答

1. ?: 三目运算符,自己手册去查,或google
2. 只需要判断你POST过来的值不空的话,组装成你要查询的字段:
比如:

$selectcolumn = '';

if(!empty($tn)){
$select .= ‘TN’;

}
以此类推。然后把sql语句中的星号换成$select 。如: select $selectcolumn from..............
只是给你提供一个思路,具体代码自己完成。

温馨提示:内容为网友见解,仅供参考
无其他回答

php+mysql数据查询语句问题,两张表user,msg【高分求解】
php$sql_str="select toid,fromId,info,max(addDate) as A_date from msg where toid=1 group fromid order by fromId "$con = mysql_connect("localhost","mysql_user","mysql_pwd");if (!$con) { die('Could not connect: ' . mysql_error()); } $rs= mysql_...

php+mysql循环读取两个关联的表中的信息
sql = "select * from 表1 a,表2 b where a.id = b.id where 你的条件"result = mysql_query($sql);if(is_resource($result)){ while ($row=mysql_fetch_array($result)) { print_r($row);\/\/这里是你要执行的代码了 } }else{ echo '无数据';} ...

用smarty(php)遍历Msql的2个表并通过smarty模板显示
pagenav="显示第 <B>".($totle?($firstcount+1):0)."<\/B>-<B>".min($firstcount+$displaypg,$totle)."<\/B> 条记录,共 $totle 条记录<BR>";\/\/如果只有一页则跳出函数:if($lastpg<=1) return false;pagenav.=" 首页 ";if($prepg) $pagenav.=" 前页 "; else $pagenav....

PHP + Mysql多个表并行查询如何实现
在PHP-FPM处理HTTP请求时,有时会遇到一个请求需要进行多次MySQL查询(在报表类应用中比较常见)。通常我们会以串行方式查询:link = new mysqli();$rs1 = $link->query('SELECT * FROM table1');while ($row = $rs1->fetch_row()) { ... }$rs2 = $link->query('SELECT * FROM tab...

mysql多表查询sql语句怎么写?
UNION:利用该关键字可以将多个SELECT 语句的查询结果合并输出,并删除重复行ALL:利用该关键字可以将多个SELECT 语句的查询结果合并输出,但不会删除重复行在使用UNION或ALL关键字将多个表合并输出时,查询结果必须具有相同的结构并且数据类型必须兼容,另外使用UNION时两张表的字段数量也必须相同,否则会提示SQL语句有错误。e...

详解mysql两表全关联实现数据关联与查询mysql两表全关联
方法一:使用UNION操作符 使用UNION操作符可以将两个查询结果集合并成一个结果集,并将其中的重复记录去除。具体来说,我们可以进行两次单表查询,分别查询A表和B表中的所有记录,然后用UNION操作符将它们合并起来。查询语句如下:SELECT A.id, A.name, null AS city FROM A UNION SELECT null AS ...

php 按条件查询2个表输出结果,并结算出其中一个的 总数,如何写新手...
你在 while 上面那一行添加一个 $a = "";在 while里面那个 echo"";下面在添加一行 $a += $row1[goods_amount]; 这个必须在 大括号}里面 ,然后在 大括号外面 echo $a; 就可以了,望采纳!

mysql中同时查询两个数据库中的数据
1、打开php的编辑器sublime,新建一个文件,写上注释内容。2、新建一个函数chaxun。3、连接数据库,填写数据库的用户名,密码,主机名以及要使用的数据库。4、填写查询的sql语句。select * from test1。5、读取查询到的数据,我们这里用到的函数是fetch_assoc来实现。6、调用这个函数。7、打开本地的...

MySql怎么查询两个表中相同的数据一共有多少条?
第二种,用php多维数组代替临时表,把结果写入多维数组。建议第一种,而且使用存储过程,这样运行速度比较快。时间是可以比较的,也就是可以找出某个时间段。临时表和存储过程的内容,请进一步学习。再就是你的数据库结构,数学课签到表和语文课签到表可以作为一个表,加一个课程字段。这么做比较标准。

php封装mysql联合查询和关联查询。 请写个例子。
B表存储永久数据,AB表有相同的id字段,为了区别A的叫gid,B的就叫id。id都是唯一的。需要按照A表id的顺序读取A和B的所有数据。查询语句:sqlt="select * FROM A LEFT JOIN B ON A.gid=B.id ORDER BY gid DESC ";方法:left join:联合两个表:条件是id相同,顺序按照A表排列。

相似回答