【发布时间】:2014-06-26 02:28:15
【问题描述】:
这是我当前运行 sql 语句的代码:
$sql= "SELECT * FROM contractor WHERE CONCAT( FIRSTNAME,' ', LASTNAME,' ', ARRIVAL,' ', ID, ' ', DRIVERL ) like '%$searchTerm%' GROUP BY DRIVERL";
$query = mysql_query($sql);
$count=mysql_num_rows($query);
if(($count)>=1)
{
$output = "";
while($row = mysql_fetch_array($query))
{
$output .= '<a href="'.'http://localhost/contractor/redirectcontractorpage.php'.'?userid='.$row['id'].'">
First Name: '.$row['FIRSTNAME'].'<br />
Last Name: '.$row['LASTNAME'].'<br />
Arrival: '.$row['ARRIVAL'].'<br />
DL: '.$row['DRIVERL'].'<br />
Company: '.$row['COMPANY'].'<br /><br /></a>';
}
echo $output;
}
else
echo "There was no matching record for the name " . $searchTerm;
}
例如,我正在打印名称 joe 的所有结果。 名字:卡尔文 姓名:乔 到货时间:2014-06-24 14:20:07 DL: kahisds8687 公司:aerotek
名字:卡尔文 姓名:乔 到货时间:2014-06-24 14:09:24 DL: kahisds8687 公司:aerotek
名字:卡尔文 姓名:乔 到货时间:2014-06-24 14:07:02 DL: kahisds8687 公司:aerotek
名字:乔 姓氏: aef 到货时间:2014-06-24 14:46:34 DL:jior21r3 公司:asfsad
名字:卡尔文 姓名:乔 到货时间:2014-06-24 14:04:13 DL: kahisds8687 公司:aerotek
相反,我想根据重复的 dl 打印名称,以防名称相同。所以我应该怎么做来调整 sql 查询,我尝试使用 distinct,但我得到了错误。
更新: 所以我想在表中查询。我想打印每个 joe,即使名字和姓氏相同(或不是)但仅基于 driverL #。因此,如果有一个 Joe Smith 和一个 Joe James,我搜索 joe,每个人的所有记录(可能很多,因为它们可以传入和传出)都可以存在。我只想打印一个,不管它是最早还是最晚到达日期,这不是我担心的。我更倾向于只打印一个案例,这样我就可以继续使用正确的个人申请。也是这种方式,目前我将打印所有案例(例如,如果它们在过去一个月内多次输入,则可能是一吨)。所以我真的想基于 driverL 打印,当然取决于搜索的内容与搜索词相关。
名字:卡尔文 姓名:乔 到货时间:2014-06-24 14:20:07 DL: kahisds8687 公司:aerotek
名字:卡尔文 姓名:乔 到货时间:2014-06-24 14:09:24 DL: kahisds8687 公司:aerotek
名字:卡尔文 姓名:乔 到货时间:2014-06-24 14:07:02 DL: kahisds8687 公司:aerotek
名字:乔 姓氏: aef 到货时间:2014-06-24 14:46:34 DL:jior21r3 公司:
名字:卡尔文 姓名:乔 到货时间:2014-06-24 14:04:13 DL: kahisds8687 公司:aerotek
当前语句 : $sql= "SELECT * FROM contract WHERE CONCAT(FIRSTNAME,' ', LASTNAME,' ', ARRIVAL, ' ', ID, ' ', DRIVRL ) like '%$searchTerm%' GROUP BY DRIVERL" ;
我希望每个人只打印一个,非常理想:
名字:乔 姓氏: aef 到货时间:2014-06-24 14:46:34 DL:jior21r3 公司:
名字:卡尔文 姓名:乔 到货时间:2014-06-24 14:04:13 DL: kahisds8687 公司:aerotek
【问题讨论】:
-
程序点:可能存在 sql 注入,并且当您将字段连接在一起时,上面的查询将创建全表扫描。
-
您的代码已经返回了不同条目的列表。如果您只想显示“Calvin Joe”一次 - 那么您需要在查询的前面使用 distinct,并去掉结果集中的到达时间。
标签: html mysql sql statements