SELECT * FROM table WHERE sid=$steering_committee AND project_num = REGEX '/^$qmonth/'");
project_num是一个11字符串,其中月份是前2个字符。我想根据表单输入和显示传递的$ month进行过滤。
我也试过这个:
SELECT * FROM table WHERE sid=$steering_committee AND project_num = REGEXP '^[" . $qmonth . "]'");
不喜欢这方面的语法
答案 0 :(得分:1)
为什么不SUBSTRING()
?我认为无论如何它会更快:
SUBSTRING(project_num, 1, 2) = '$qmonth'
答案 1 :(得分:1)
请改为尝试:
SELECT * FROM table WHERE sid=$steering_committee AND project_num REGEXP '^$qmonth'
然后问自己一些问题。
我应该使用预备语句而不是变量插值吗?或者,我只是喜欢被黑客入侵?
我真的应该使用一个永远不能编入索引的REGEXP,或者一个非常可索引的前缀匹配工作吗“AND project_num LIKE'$ qmonth%'”?或者你真的不喜欢活泼的网页吗?