社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

在mysql regexp中使用php变量

iCode98 • 5 年前 • 1457 次点击  

我有多个身份证 + 在表中一行的一个字段中 比如:( 一百二十三 +21654+412+12387)

我只需要精确匹配(例如:只有“123”而不是“123&12387”)。

我的代码是这样的:

$var = $value['id'];
$result = mysqli_query($this->dbh, "SELECT id FROM table
      WHERE id REGEXP '[[:<:]]$var[[:>:]]' ");

在regexp中使用变量有问题。

万一:

$result = mysqli_query($this->dbh, "Select id FROM table
      WHERE id REGEXP '^$id|[\+]$id' ");

它有效,但它不返回完全匹配的结果

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39210
 
1457 次点击  
文章 [ 2 ]  |  最新文章 5 年前
niiwig
Reply   •   1 楼
niiwig    6 年前

我会去的:

$sql = "SELECT id FROM table WHERE id='123' OR id LIKE '123+%' OR id LIKE '%+123' OR id LIKE '%+123+%'";

如果只有值,则应用第一个条件;如果字段以值开头,则应用第二个条件;如果字段以值结尾,则应用第三个条件;如果值位于字段中间,则应用第四个条件。

Rick James
Reply   •   2 楼
Rick James    6 年前

php提示:“interpolation”的工作方式如下:

  • "...$var[...]..." 将其视为数组查找 $var[...] .
  • 没有 [ , $var 假定为标量。
  • "...{$var}[...]..." 是你需要的

最后一个示例有大括号 {} 告诉PHP在不关心后面的内容的情况下评估内部内容。更常见的用法:

$var = 'abc';
// I want to generate "abc123"
$bad  = "$var123";   // looks for variable 'var123'
$good = "{$var}123;  // correctly yields "abc123"

您的第二次尝试可以修复,因此:

REGEXP '(^|\+)$id(\+|$)'

含义:

  1. 在开始或之后 + ,
  2. 查找$ID(插入后),
  3. 然后停下来 + 或字符串的结尾。