2015-03-25 228 views
0

我對PHP的工作和這個查詢我們要執行: - 1:查詢 -MySQL查詢與IN子句

SELECT m.sku AS sku FROM merchant m WHERE m.sku IN ('B00TSHIWCE,B00TRPS43Y,B00PGL6W6E,B00M7D93QU,B00U2E5EPA,B00TSHE1RO,B00T687TBA,B00SYFZMSS,B00SPVDTUY,B00RZY4YZG'); 

它沒有顯示任何錯誤,查詢執行成功和結果沒有。

但是,當我們改變這樣我的查詢: -

2:查詢 -

SELECT m.sku AS sku FROM merchant m WHERE m.sku IN ('B00TSHIWCE', 'B00TRPS43Y', 'B00PGL6W6E', 'B00M7D93QU', 'B00U2E5EPA', 'B00TSHE1RO', 'B00T687TBA', 'B00SYFZMSS', 'B00SPVDTUY', 'B00RZY4YZG'); 

那麼它給我造成的。

我有一個字符串,我們通過我的1:查詢。

$sku = "B00TSHIWCE,B00TRPS43Y,B00PGL6W6E,B00M7D93QU,B00U2E5EPA,B00TSHE1RO, B00T687TBA,B00SYFZMSS,B00SPVDTUY,B00RZY4YZG"; 

然而MySQL想串這樣的其中之一,我們在我的2傳:查詢: -

$sku1 = "'B00TSHIWCE','B00TRPS43Y','B00PGL6W6E','B00M7D93QU','B00U2E5EPA','B00TSHE1RO', 'B00T687TBA','B00SYFZMSS','B00SPVDTUY','B00RZY4YZG'"; 

這一次,我們不想通過。

任何其他的想法我可以如何使用此字符串($ sku)執行我的查詢並獲得所有結果?

其他建議/示例?

謝謝!

+2

使用''FIND_IN_SET的()代替'in'。或者,使用'in'子句中的多個字符串正確地格式化查詢。 – 2015-03-25 11:40:50

+0

@GordonLinoff thx用於註釋,但FIND_IN_SET()子句同樣需要像$ sku1這樣的參數,但我們想要使用$ sku。 – Sid 2015-03-25 11:53:06

回答

-1

嘗試使用下面的代碼段:

$sku2 = str_replace(",","','",$sku); 
mysql_query("select m.sku as sku from merchant m where m.sku IN ('".$sku2."')"); 
0

使用find_in_set功能:

create table merchant (sku varchar(50)); 
insert into merchant values ('B00TRPS43Y'); 
insert into merchant values ('FOOBARBAZ'); 
insert into merchant values ('B00TSHE1RO'); 
insert into merchant values ('BAZBARFOO'); 

SELECT m.sku AS sku 
FROM merchant m 
WHERE find_in_set(
    m.sku, 'B00TSHIWCE,B00TRPS43Y,B00PGL6W6E,B00M7D93QU,B00U2E5EPA,B00TSHE1RO,B00T687TBA,B00SYFZMSS,B00SPVDTUY,B00RZY4YZG' 
); 

結果:

sku 
B00TRPS43Y 
B00TSHE1RO