目前有两张表:mhf (意为models_has_features), mhr(意为models_has_replacements). 其中msf的字段为Model_Name和FD_Name(意为Feature Name),msr的字段为Model_Name和RD_Name(意为Replacement Name). 现在通过php获取了用户对于features 和 replacement的选项,想通过这些选项进行数据库搜索,从而返回model名称。感谢上个帖子版友的帮助,我目前的相关代码如下:
$usrinput1=array_merge($outputs,$functions,$qualifications); //这里是用户输入的features选项,其中各个变量均是数组,由多选列表而来
$usrinput2=array_merge($ge,$ametek,$weschler,$prime,$vmi,$foxboro,$bailey,$chessell,$hays); //这里是用户输入的replacement选项,其中各个变量也均是数组 $query0="SELECT mhf.M_Name FROM mhf,mhr
WHERE mhf.M_Name=mhr.M_Name
AND mhf.FD_Name='$input_signal'
AND mhf.FD_Name='$power_input'
AND mhf.FD_Name='$display'
AND mhf.FD_Name='$case_mounting'";
//其中,$power_input,$display,$case_mounting 均是字符串变量,是由用户选择的单选列表获取而来 $query1="AND mhf.FD_Name='".implode("' AND FD_Name='",$usrinput1)."'";
$query2="AND mhr.RD_Name='".implode("' AND RD_Name='",$usrinput2)."'"; $query=$query0.$query1.$query2;//这里是想把这三个query组合成一个完整的query,从而达到 select SELECT mhf.M_Name FROM mhf,mhr WHERE mhf.M_Name=mhr.M_Name AND mhf.FD_Name='$input_signal'... AND mhf.FD_Name="userinput1里各个值" AND mhr.RD_Name="userinput2里各个值" 的效果。 $result = mysql_query($query) or die("Query failed");
然后就是输出代码, print "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n"; foreach ($line as $col_value) { print "\t\t<td>$col_value</td>\n"; } print "\t</tr>\n"; } print "</table>\n";
可是运行了之后没有任何显示啊,我保证自己的测试选项是应该有结果的,可是显示不出来,希望各位高人看看我的代码哪里出错了,多谢!
$usrinput1=array_merge($outputs,$functions,$qualifications); //这里是用户输入的features选项,其中各个变量均是数组,由多选列表而来
$usrinput2=array_merge($ge,$ametek,$weschler,$prime,$vmi,$foxboro,$bailey,$chessell,$hays); //这里是用户输入的replacement选项,其中各个变量也均是数组 $query0="SELECT mhf.M_Name FROM mhf,mhr
WHERE mhf.M_Name=mhr.M_Name
AND mhf.FD_Name='$input_signal'
AND mhf.FD_Name='$power_input'
AND mhf.FD_Name='$display'
AND mhf.FD_Name='$case_mounting'";
//其中,$power_input,$display,$case_mounting 均是字符串变量,是由用户选择的单选列表获取而来 $query1="AND mhf.FD_Name='".implode("' AND FD_Name='",$usrinput1)."'";
$query2="AND mhr.RD_Name='".implode("' AND RD_Name='",$usrinput2)."'"; $query=$query0.$query1.$query2;//这里是想把这三个query组合成一个完整的query,从而达到 select SELECT mhf.M_Name FROM mhf,mhr WHERE mhf.M_Name=mhr.M_Name AND mhf.FD_Name='$input_signal'... AND mhf.FD_Name="userinput1里各个值" AND mhr.RD_Name="userinput2里各个值" 的效果。 $result = mysql_query($query) or die("Query failed");
然后就是输出代码, print "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n"; foreach ($line as $col_value) { print "\t\t<td>$col_value</td>\n"; } print "\t</tr>\n"; } print "</table>\n";
可是运行了之后没有任何显示啊,我保证自己的测试选项是应该有结果的,可是显示不出来,希望各位高人看看我的代码哪里出错了,多谢!
解决方案 »
- js中套php,js退出php的foreach退不出来
- mysql中大数据操作的问题
- 写了个带事务的通用数据库操作类,大家提下意见.
- 又要转向学习php了,郁闷没完没了的学。突然发现自己有那么多分,谁想要的就来吧!
- 如何产生一个字符和数字的随机数?
- 寻找jakey9826(无眠)!急盼解决问题!
- FCKeditor的图片上传问题哪位老大能解决啊?FCKeditor的图片上传问题哪位老大能解决啊?FCKeditor的图片上传问题哪位老大能解决啊?
- url 传递变量(中文值)问题?
- 我用iis5配置了php, 可是asp有时就不行了,出现500错误,如何解决?
- mysql 查询,指定记录
- php二维数组求最大值
- mysql乱码
AND mhf.FD_Name='$power_input'
AND mhf.FD_Name='$display'
AND mhf.FD_Name='$case_mounting'";
满足这这样的条件可能吗?
显然 $input_signal,$power_input,$display,$case_mounting 是不同的变量,如果上面的条件成立,只能是这4个变量的值相等,那么要弄成4个变量干什么?
请给出表结构、字段说明及取值范围
$query1="AND mhf.FD_Name='".implode("' AND mhf.FD_Name='",$usrinput1)."'";
$query2="AND mhr.RD_Name='".implode("' AND mhf.RD_Name='",$usrinput2)."'";
$query=$query0." ".$query1." ".$query2;将query的sql语句打出来看看,在将其粘贴到mysql中,看看是否能正确执行。
恩,我也意识到了这个问题,但却是需要同一个字段满足多个值时进行查询,不知道有没有什么解决方法呢?比如通过noexist? 谢谢!
AND mhf.FD_Name LIKE '%{$power_input}%'
AND mhf.FD_Name LIKE '%{$display}%'
AND mhf.FD_Name LIKE '%{$case_mounting}%'";
给出几个数据看看,可能问题远没有你想得那么复杂
mhf的数据截图:
mhr的数据截图:
数据库结构图:
网页表单图
那么,传入的数据
谁对应 M_Name
谁对应 FD_Name条件表达式应为
M_Name='值' AND FC_Name='值'如果可以多选,则为
M_Name in('值1','值2','值3'...) AND FC_Name in('值1','值2','值3'...)
在传入的值中,没有M_Name...全部都是FD_Name,是想根据所有的FD_Name,返回拥有这些features的Models...