2016-11-15 37 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ステートメントを追加する必要があります。「$のsecondlastdigitの2番目のインスタンスを囲む二重引用符で

$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'; 

。 '; 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の後にアルファベット1文字しか表示されず、他の文字と一致しないためです。クエリを次のように変更します。

$ query = 'SELECT * FROM'。$ tableName ' WHERE allowed_countries LIKE "%"。$ regionId。 '%'と、REGEXP "i: 'を作成します。$ secondlastdigit。';" (skurules、char(34)、0)REGEXP "s:1:0 '。$ secondlastdigit.'0;"ステータス= 1 ORDER BY id DESC LIMIT 1 ';

非常にハック修正が、今のバインドの私を取得します。..

マーク