php如何将mysql数据转为数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php如何将mysql数据转为数组相关的知识,希望对你有一定的参考价值。
数据库中有两个字段,ID和info
想将info里的内容转为数组,info里的数据格式都是array(0=>"a1",1=>"a2"); 这样的
我的意思就是输出的时候$row[1][0]就是输出a1 这样
json_encode() 函数的功能是将数值转换成json数据存储格式。
例如:
<?php
//定义一个数组,用于保存读取到的数据
$array = array();
$query = mysql_query("select * from table");
//遍历数据表
while($rows = mysql_fetch_array($query))
//可以直接把读取到的数据赋值给数组或者通过字段名的形式赋值也可以
$array[] = $rows;
$array[$rows[\'id\']] = $rows;
print_r($array);
//最后通过json_encode()转化数组
echo json_encode($array);
?> 参考技术A 数据库里面存储的时候最好是转成json格式,或者用xx隔开的格式来存储这种数据,然后查询后在转化数据就好了本回答被提问者和网友采纳
PHP如何使用laravel 5将数据从数组保存到mysql
【中文标题】PHP如何使用laravel 5将数据从数组保存到mysql【英文标题】:PHP How to save data from array to mysql using laravel 5 【发布时间】:2015-08-10 09:09:42 【问题描述】:我正在从 POST 获取“气缸”数据数组中的一个数组:
Array
(
[serie] => Array
(
[0] => 1234
[1] => 3545
)
[seriesap] => Array
(
[0] => 1234234
[1] => 345345
)
[type] => Array
(
[0] => 4546
[1] => csdfwe
)
[admission] => Array
(
[0] => 04-05-2015
[1] => 04-05-2015
)
[invoice] => Array
(
[0] => fei76867
[1] => feiasodjf
)
)
现在,键内的字段:serie、type、admission 等不会改变,但这些键内的信息确实会改变,我的意思是那里甚至可能有 15 个项目。
最后我需要保存到数据库:
$cylinder = new Cylinder();
$cylinder->serie = ??;
$cylinder->seriesap = ??;
$cylinder->type = ??;
$cylinder->admission = ??;
$cylinder->invoice = ??;
$cylinder->save
我怎样才能完成这项任务并保存所有的气瓶?
我已经尝试了所有我能想到的 foreach 似乎没有任何效果。
/编辑/
这就是我目前所做的:
$cyldata = $_POST['cylinder']; //this is the post from top.
$num_elements = 0;
while($num_elements < count($cyldata['serie']))
$cylinder = new Cylinder();
$cylinder->serie = $cyldata['serie'][$num_elements];
$cylinder->type = $cyldata['type'][$num_elements];
$cylinder->admission = $cyldata['admission'][$num_elements];
$cylinder->seriesap = $cyldata['seriesap'][$num_elements];
$cylinder->save
$num_elements++;
但感觉很难看,所有这些保存都感觉不对。如果你问我,这是肮脏的解决方案。
【问题讨论】:
【参考方案1】:我不知道是什么迫使你使用$_POST
全局数组来接收来自用户的数据。
也许,这就是你想要的。
/**
* Store the form inputs in the table
*
* @param Request $request
*/
public function store( Request $request )
$data = Input::get();
for($i = 0; $i < count($data['serie']); $i++)
$c = new Cylinder();
$c->serie = $data['serie'][$i];
$c->type = $data['type'][$i];
$c->admission = $data['admission'][$i];
$c->seriesap = $data['seriesap'][$i];
$c->save(); // fixed typo
【讨论】:
【参考方案2】:首先,您需要将输入数据转换为另一种格式:
$cyldata = $_POST['cylinder']; //this is the post from top.
$num_elements = 0;
$sqlData = array();
while($num_elements < count($cyldata['serie']))
$sqlData[] = array(
'serie' => $cyldata['serie'][$num_elements],
'type' => $cyldata['type'][$num_elements],
'admission' => $cyldata['admission'][$num_elements],
'seriesap' => $cyldata['seriesap'][$num_elements],
'invoice' => $cyldata['invoice'][$num_elements], // you miss this field, aren't you?
'created_at' => Carbon\Carbon::now(), // only if your table has this column
'updated_at' => Carbon\Carbon::now(), // only if your table has this column
);
$num_elements++;
其次,使用 Fluent 查询生成器进行批量插入:
DB::table('table_name')->insert($sqlData);
注意:如果您的表格有这些字段,created_at
和 updated_at
会出现在此处。使用 Eloquent 模型时,这些字段会自动更新。但是,我们不使用 Eloquent,因此我们必须手动将值分配给这些字段。
【讨论】:
【参考方案3】:因为你有一个数组来插入数据到数据库,你可以试试模型中的create
方法:
Cylinder::create($array);
但它实际上需要数组的key
是数据库中的field_name
。或者您可以使用查询生成器执行此操作:
DB::table('table_name')->insert($array);
同样需要将数组的key
设置为数据库中的field_name
。
【讨论】:
我刚试过这个,只有 1 行没有关于 Cylinders 表的信息,我认为当数组中有一个数组时它不起作用。 好吧,如果你把$cylinder = new Cylinder();
从while循环中取出,也许你自己的代码会起作用。以上是关于php如何将mysql数据转为数组的主要内容,如果未能解决你的问题,请参考以下文章
php怎么将mysql查询的数组中 的(数字)字符串类型转为数字类型