2016-12-16 73 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