2016-12-16 16 views
-2

私はYii2フレームワークを使ってプロジェクトを開発していますが、私のプロジェクトではSQLの単一の列に配列を送りました。PHP配列jsonを変換してSqlに送信し、配列としてSqlからデータをフェッチする

Array(
[0] => Array 
    (
    [0] => Array 
     (
     [0] => first_name 
     [1] => last_name 
     [2] => age 
     [3] => sex 
     ) 
) 
[1] => Array 
    (
    [0] => Array 
     (
     [0] => Andrew 
     [1] => Lugiano 
     [2] => 18 
     [3] => Male 
     ) 
) 
[2] => Array 
    (
    [0] => Array 
     (
     [0] => Elizabeth 
     [1] => Natari 
     [2] => 21 
     [3] => Female 
     ) 
    ) 
) 

をし、これが私のCustomHeaderControllerコードである:配列を前に、SQLに送信

$encoded_array = json_encode($arrayData); 
$command_2 = "INSERT INTO data(array_data) VALUES('$encoded_array')"; 
$query_2 = Yii::$app->db->createCommand($command_2)->execute(); 

colum Sqlのn名はarray_dataで、データ型はmediumtextで、テーブル名はdataです。

、その後、私は、SQLからSaveControllerを通じてそれを取り戻すためにしようとしましたが、これは私はSQLからそのデータを取得するために使用されたコードです。

$sql = $connection->createCommand("SELECT array_data FROM data WHERE user_id=$userId"); 
$modelHeader = $sql->queryColumn(); 

が、私はこれを得ました結果:

アレイ ( [0] => [[[ "FIRST_NAME"、 '' last_nameの ''、 '' 年齢 ''、 "セックス"]]、[[ "アンドリュー"、 "Lugiano "、" 18 "、" Male "]]、[[" Elizabeth "、" Natari "、" 21 "、" Female "]]] )

私の予想結果ではなかった

、これは私が私のプロジェクトのために必要なもの(ちょうど前に、SQLにsendedでは同様)である

アレイ ( [0] =>配列 ( [0] =>配列 は)( [0] => FIRST_NAME [1] => [2] =>年齢 [3] =>性別 をLAST_NAME) 0 [1] =>配列 ( [0] =>配列 ( [0] =>アンドリュー [1] => Lugiano [2] => 18 [3] =>男性 ) ) [2] =>配列 ( [0] =>配列 ( [0] =>エリザベス [1] => Natari [2] => 21 [3] =>女性 ) ) )

私は期待どおりの結果と同じようにSQLからデータを取得できますか?

+1

あなたは 'クエリ結果をjson_decode'を忘れてしまった... – deceze

+0

それはない' json_decode'でき、のためにこのような'$ sql-> queryColumn();'コードは結果を直接配列に設定します。たぶんあなたは私が 'json_decode'することができるように、結果を文字列として得る方法を知っていますか? @deceze – Blackjack

+0

なぜ私はダウンボートを得たのか分かりますか? thanks – Blackjack

答えて

0

データ使用フォーマッタを返すときはいつでも、データを配列としてのみ挿入します。既存のコードのデコードのために詳細をwiki

については

\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
$sql = $connection->createCommand("SELECT array_data FROM data WHERE user_id=$userId"); 
$modelHeader = $sql->queryColumn(); 

$sql = $connection->createCommand("SELECT array_data FROM data WHERE user_id=$userId"); 
$modelHeader = $sql->queryColumn(); 
$phparray = json_decode($modelHeader[0]); 
+0

ありがとう@deep、それの仕事:) – Blackjack

関連する問題