语法问题

vltsax25  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(221)

我试图通过mysql数据库中的一个表构建一个搜索。由于区分大小写,我想使用mysql函数“lower”将searchstring与表中的值进行比较。
这是我的密码:

$searchparameter = '%' .$parts[$i]. '%';

$stmt = $conn->prepare("SELECT jobunique, joblat, joblng FROM job 
                                                                 WHERE jobdeleted = ? 
                                                                 AND (LOWER(jobtitle) LIKE ?
                                                                 OR LOWER(jobmaincategory) LIKE ?
                                                                 OR LOWER(jobsubcategory) LIKE ?
                                                                 OR LOWER(jobdescription) LIKE ?)");

$stmt->bind_param('issss', $del, $searchparameter, $searchparameter, $searchparameter, $searchparameter);

我尝试使用以下选项:

1. $searchparameter = 'LOWER(\'%' .$parts[$i]. '%\')'; 
2. $searchparameter = 'LOWER(%' .$parts[$i]. '%)';
3. $searchparameter = "LOWER(%" .$parts[$i]. "%)";

两个都不管用。有人能解释一下我做错了什么吗?

j0pj023g

j0pj023g1#

如果将php变量小写,那么只需添加 % ...

$searchparameter = '%' .strtolower($parts[$i]). '%';

当您绑定一个值时,它被假定为一个值,并且您正在尝试绑定一个函数调用。
或者如果你想继续使用mysql lower() ,我想你可以把它添加到mysql和

LOWER(jobmaincategory) LIKE LOWER(?)

就用它吧

$searchparameter = '%' .$parts[$i]. '%';

相关问题