我有一个搜索表单,可以按名称搜索:
if($v=$_POST['Name']){
$sql.=" AND CONCAT(' ',Name) LIKE '% $v%'";
}
if($v=$_POST['PriceU']){
$sql.=" AND Price BETWEEN '$_POST[PriceF]' AND '$_POST[PriceU]'";
}
if($v=$_POST['RateU']) {
$sql.=" AND Rate BETWEEN '$_POST[RateF]' AND '$_POST[RateU]'";
}
if($v=$_POST['Cat']) {
$sql.=" AND Category='$_POST[Cat]' ";
}
$resm=mysql_query ("SELECT * from members WHERE Level='$_GET[level]' $sql Order By Name");
只是为了理解,我呼应了“$resm”。当我使用 Toyota 名称进行搜索时,生成的查询如下:
SELECT * FROM members
WHERE Level='2' AND
CONCAT(' ',Name) LIKE '% Toyota%'
ORDER BY Name.
但是我的问题是CONCAT(' ',Name)
这里有什么用?我认为即使没有CONCAT
. 那是
if($v=$_POST['Name']){
$sql.=" AND (' ',Name) LIKE '% $v%'";
那么生成的SQL就是
SELECT * from members WHERE Level='2' AND Name LIKE '% Toyota%' Order By Name
但这不会输出任何东西。这是为什么?这个查询有什么问题,有什么影响CONCAT
?