我在表中一行的一个字段中有多个+
隔开的ID
像:( 123 + 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' ");
它可以工作,但不只返回完全匹配项
答案 0 :(得分:0)
PHP技巧:“插值”通过以下方式起作用:
"...$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 :(得分:-1)
我去:
array(5) {
[0]=>
string(5) "hello"
[1]=>
string(11) "how are you"
[2]=>
string(11) "how is life"
[3]=>
string(20) "live life, live free"
[4]=>
string(10) ""isnt it?""
}
如果只有值,则应用第一个条件,如果字段以值开头,则第二个条件,如果字段以值结尾,则第三个条件,如果值位于字段的中间,则第四个条件。
>