2015-12-06 68 views
1

我有以下查詢作品的權利在SQL查詢工作在SQL但不是在PHP

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"); 

任何人都可以看出錯誤?

UPDATE:

我設法打印查詢的建議後,這是相同的

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?

+1

爲什麼不在第二個例子中只回顯傳遞給query()的字符串,並檢查其差異是什麼? –

+0

我不能使用codeigniter,它不是那麼簡單的打印查詢,或者至少我不知道如何去做。 – user2417624

+0

我管理打印查詢,我已經更新了問題....查詢是相同的,但結果仍然是錯誤的。請重新閱讀這個問題,看看更新 – user2417624

回答

0

抱歉讓你們所有人陷入困境。問題在於我的codeigniter代碼,而不是查詢。只要我解決了這個問題,查詢現在就像一個魅力一樣。

+0

因此,將其標記爲已解決 –

相關問題