MySQL准备了语句并区分大小写



过去我使用mysqli类的query方法。现在我正在使用prepare方法重写很多代码。我有一个排序规则为utf8mb4_bin(区分大小写(的表,但用户应该执行不区分大小写的查询,过去的查询是这个

SELECT SQL_CALC_FOUND_ROWS * FROM utenti WHERE nome LIKE _utf8mb4 ? COLLATE utf8mb4_unicode_ci ORDER BY id_utente ASC

我知道我不能在准备好的语句中使用这种语法,什么是最好的方法?我认为强制存储值和查询值小写,但我认为这不是最好的方法

您应该能够对列应用不区分大小写的排序规则,然后将其与您的参数进行比较:

SELECT * FROM utenti 
WHERE nome COLLATE utf8mb4_unicode_ci LIKE ? 
ORDER BY id_utente ASC

附言:我建议删除SQL_CALC_FOUND_ROWS。如果不使用LIMIT,它就没有任何用途。这只会让表演变得糟糕。

您所需要做的就是用php将值转换为大写,并在查询中用upper包装您的列。

select * from table where upper(column) like ?

用?设置为您要查找的字符串的大写值。

相关内容

  • 没有找到相关文章

最新更新