2016-11-15 164 views
1

我根本不知道PHP,所以我正在努力通過這個。我需要將一個or部分添加到MySQL查詢中,但是我要搜索的值有雙引號。我需要弄清楚如何在PHP中添加它們,以便將它們傳遞給MySQL。目前查詢是這樣的:雙引號在PHP

$query = 'SELECT * FROM ' .$tableName.' WHERE allowed_countries LIKE "%'.$regionId.'%" and skurules REGEXP "i:'.$secondlastdigit.';" and status = 1 ORDER BY id DESC LIMIT 1'; 

但我需要添加一個or聲明搜索字符串值,看起來像:

$query = 'SELECT * FROM ' .$tableName.' WHERE allowed_countries LIKE "%'.$regionId.'%" and skurules REGEXP "i:'.$secondlastdigit.';" or skurules REGEXP "s:1:'.$secondlastdigit.';" and status = 1 ORDER BY id DESC LIMIT 1'; 

與周圍的」 $ secondlastdigit二審雙引號。 「;當傳入MySQL時。

我的JSON字符串我在尋找這個樣子的:

a:12:{i:1;s:2:"15";i:2;s:2:"10";i:3;s:2:"30";i:4;s:2:"50";i:5;s:3:"120";i:6;s:3:"240";i:7;s:3:"480";i:8;s:3:"960";i:9;s:4:"3786";s:1:"A";s:3:"100";s:1:"C";s:2:"60";s:1:"B";s:5:"18930";} 

回答

2

首先:切勿

如果你仍然想,那麼... 真的不要

在串行化數組上進行SQL查詢只是地獄。你應該儘量避免它不惜一切代價。

或者:

  • 轉換序列化塔送入一個標準的SQL表
  • 或選擇列到一個PHP變量,反序列化它並通過它進行搜索。

例子:

$properPhpArray = unserialize($sqlResult['column_name']); 
0

同意,搜索序列串是不是最好的解決辦法,什麼開發商做盡管有可用bottle_size表。我需要一個快速修復,沒有時間/技巧來重寫稅務計算magento擴展,所以我用查詢中的替換來解決我現在的問題。

由於「s:1:X」將始終是1之後的一個字母字符,並且不會與其他任何字符匹配。我將查詢更改爲:

$ query ='SELECT * FROM'。$ tableName。' WHERE allowed_countries LIKE「%」。$ regionId。'%「和skurules REGEXP」i:'。$ secondlastdigit。';「或替換(skurules,char(34),0)REGEXP「s:1:0」$ secondlastdigit.'0;「和狀態= 1 ORDER BY id DESC LIMIT 1';

非常hackish的修復,但使我擺脫現在困境的..

馬克