MYSQl选择正则表达式语法3小时仍然无法找到问题

时间:2014-03-03 22:40:34

标签: php mysqli

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 . "]'");

不喜欢这方面的语法

2 个答案:

答案 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%'”?或者你真的不喜欢活泼的网页吗?