查询在sql中工作,但在php中不工作

查询在sql中工作,但在php中不工作,php,mysql,regex,Php,Mysql,Regex,我有一个在sql中正常工作的查询 SELECT * FROM `dsrequest` WHERE dsrequeststatusID NOT IN ('4', '5', '6') AND CASE WHEN ('Κ' REGEXP '^[0-9]+$') THEN dsrequestClientAfm LIKE 'Κ%' ELSE ( dsrequestClientFirstName LIKE 'Κ%' OR dsrequestClientLastName LIKE 'Κ%' OR dsr

我有一个在sql中正常工作的查询

SELECT *
FROM `dsrequest`
WHERE dsrequeststatusID NOT IN ('4', '5', '6')
AND CASE
WHEN ('Κ' REGEXP '^[0-9]+$')  THEN
dsrequestClientAfm LIKE 'Κ%'
ELSE
( dsrequestClientFirstName LIKE 'Κ%' OR  dsrequestClientLastName LIKE 'Κ%' OR  dsrequestClientEmail LIKE 'Κ%'  )
END
但当我使用变量而不是“K”将其放在php中时,会给出错误的结果集,这就是,该部分似乎根本不起作用。我得到的记录dsrequestStatusID为4,但实际情况并非如此

以下是我在php中使用的查询:

$this->db->query("SELECT *
FROM `dsrequest`
WHERE dsrequeststatusID NOT IN ('4', '5','6')
AND CASE
WHEN ('$searchString' REGEXP '^[0-9]+$')  THEN
dsrequestClientAfm LIKE '$searchString%'
ELSE
( dsrequestClientFirstName LIKE '$searchString%' OR  dsrequestClientLastName LIKE '$searchString%' OR  dsrequestClientEmail LIKE '$searchString%'  )
END");
有人能发现错误吗

更新:


在建议之后,我设法打印查询,结果是一样的

SELECT * FROM `dsrequest` 
WHERE dsrequeststatusID NOT IN ('4', '5','6') 
AND CASE 
WHEN ('Κ' REGEXP '^[0-9]+$') THEN 
dsrequestClientAfm LIKE 'Κ%' 
ELSE 
( dsrequestClientFirstName LIKE 'Κ%' OR dsrequestClientLastName LIKE 'Κ%' OR dsrequestClientEmail LIKE 'Κ%' ) 
END

有人能看出我看不到的区别吗?正则表达式是问题所在吗?sql和php之间有什么区别吗?

很抱歉给大家带来了麻烦。问题出在我的codeigniter代码的其他地方,而不是查询。一旦我解决了这个问题,查询现在就像一个符咒一样工作。

很抱歉给你们所有人带来了麻烦。问题出在我的codeigniter代码的其他地方,而不是查询。一旦我解决了这个问题,查询现在就像一个符咒一样工作。

为什么不回显第二个示例中传递给query()的字符串,并检查区别是什么?我不能使用codeigniter,因为打印查询并不是那么简单,或者至少我不知道怎么做。我设法打印查询,我已经更新了问题…查询是一样的,但结果仍然是错误的。请重新阅读问题以查看更新。只是一些琐碎的建议,您确定在执行PHP代码时连接到同一台sql server吗?@Ryan Vincent,我现在尝试了,无论我在搜索中键入什么,我都会得到所有结果(这是错误的)。您为什么不回显传递给query()的字符串在您的第二个示例中,检查区别是什么?我不能使用codeigniter,因为打印查询并不是那么简单,或者至少我不知道如何执行。我设法打印了查询,并更新了问题……查询是相同的,但结果仍然错误。请重新阅读问题以查看更新只是一些琐碎的建议,您确定在执行PHP代码时连接到同一台sql server吗?@Ryan Vincent,我现在尝试了,无论在搜索中键入什么,我都会得到所有结果(这是错误的)