2016-12-16 70 views
-2

我有一個使用Yii2框架的項目開發,並且在我的項目中,我已經將一個數組發送到sql中的單個列中,這是以下內容陣列之前發送到SQL:轉換PHP數組json併發送到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

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

的科拉姆在Sql中的名稱是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」, '' 姓氏 '', '' 年齡 '', 「性別」]],[[ 「安德魯」,「Lugiano 「,」18「,」男「]],[[」伊麗莎白「,」納塔裏「,」21「,」女「]]] )

這不是我期望的結果,這是我需要爲我的項目(就像之前sended到SQL

陣列 ( [0] =>陣列 ( [0] =>數組 ( [0] =>如first_name [1] =>姓氏 [2] =>年齡 [3] =>性 ) ) [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

我可以知道爲什麼我會倒下嗎?謝謝 – Blackjack

回答

0

只要您想要返回數據使用格式化程序,只將數據作爲數組插入。像這樣:

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

更多細節wiki

對於現有代碼解碼:

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

謝謝@deep,它的工作:) – Blackjack